Ios iPad上的UINavigationController损坏+;主细节&x2B;塔巴

Ios iPad上的UINavigationController损坏+;主细节&x2B;塔巴,ios,uinavigationcontroller,master-detail,corruption,ipad,Ios,Uinavigationcontroller,Master Detail,Corruption,Ipad,我有这个恼人的问题,我已经到处找了。我认为有太多的相关术语影响了我的搜索。下面是: 我在iPad上有一个master-detail应用程序。主视图控制器是一个选项卡栏控制器。每个选项卡都是一个导航控制器,其中包含相关的根控制器。像这样: 问题是,当我将另一个控制器推到一个选项卡式导航控制器上时,导航堆栈会变得混乱。导航栏会更新,但实际的内容或控制器不会更新。如果我玩得够多,它也会崩溃,出现“不平衡的开始/结束外观转换调用” 只有当iPad以纵向模式启动时,问题才会出现。如果它是从景观开始的,那

我有这个恼人的问题,我已经到处找了。我认为有太多的相关术语影响了我的搜索。下面是:

我在iPad上有一个master-detail应用程序。主视图控制器是一个选项卡栏控制器。每个选项卡都是一个导航控制器,其中包含相关的根控制器。像这样:

问题是,当我将另一个控制器推到一个选项卡式导航控制器上时,导航堆栈会变得混乱。导航栏会更新,但实际的内容或控制器不会更新。如果我玩得够多,它也会崩溃,出现“不平衡的开始/结束外观转换调用”

只有当iPad以纵向模式启动时,问题才会出现。如果它是从景观开始的,那么一切都会正常运转。有时两者交替会修复它,有时会导致不平衡崩溃

希望我列出了足够的信息以提供帮助,我无法准确指出问题所在,这使得这个问题有点难问

编辑:

我按下视图控制器,如下所示:

[self performSegueWithIdentifier: @"pushMyControllerSegue" sender: self];
pushMyControllerSegue定义为style=push,destination=current

为了它的价值,这是我的准备曲:


看起来你在故事板上的片段有些问题。在序列图像板中为视图控制器提供标识符,并尝试使用以下代码而不是分段来推送视图控制器:

MyController *vc= (MyController*)[self.storyboard instantiateViewControllerWithIdentifier: @"YOUR_VIEWCONTROLLER_IDENTFIER"];
vc.delegate=self;
[self.navigationController pushViewController:vc animated:YES];

好吧,最终用“创可贴”解决了这个问题——也就是说,没有找到根本原因,但进行了一些黑客攻击以使其发挥作用

通过大量调试,我相当肯定这与肖像模式下的大师失踪有关。正如我前面提到的,切换到另一个选项卡并返回到原来的选项卡可以解决问题。所以我试着按程序做这件事。如果我在tab控制器切换回原始tab之前打开master,问题就解决了。如果我在它切换回来后打开它,问题仍然存在

(为了切换回来,我使用了
performSelector:withDelay
,从而确保来回切换选项卡实际上是切换了选项卡,并且没有被选项卡栏控制器的内部优化取消。切换完成后,它还允许我玩)

那么我在下面的委托方法上做了什么(如果这对任何人都有帮助的话)

- (void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController
我从选定的选项卡切换到选定的选项卡。无
性能选择器:需要延迟


也许是苹果方面的一个错误-不确定。。。无论如何,我希望这对某人有所帮助。

您是如何按的(在哪里,显示代码)?谢谢@Wain,更新的问题除了在序列中按外,您是否也使用带按钮的按。?如果是这样的话,请删除该错误,因为这种类型的错误通常发生在调用两个push调用时。一般来说,错误与同时推送两个视图控制器或两个方法试图同时推送同一视图有关。同时也要检查故事板上的序列。没有任何重复的推送。重新安装了相关的segue,但仍然不好
- (void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController