iPad + Master Detail + TabBar上的UINavigationController损坏

时间:2014-02-25 15:35:44

标签: ios uinavigationcontroller master-detail corruption ipad

我有这个烦人的问题,并且搜索得很广泛。我认为有太多相关术语会影响我的搜索。所以这里:

我在iPad上有一个主要细节应用程序。主视图控制器是标签栏控制器。每个选项卡都是一个导航控制器,它可以保存相关的根控制器。像这样: Storyboard representation of my project

问题是当我在一个标签式导航控制器上推动另一个控制器时,导航堆栈变得混乱。导航栏会更新,但实际内容或控制器不会更新。如果我玩够了它,它也会因“不平衡调用开始/结束外观过渡”而崩溃

仅在iPad以纵向模式启动时才会出现此问题。如果它从横向开始,一切正常。有时在两者之间交替修复它,有时会导致不平衡的崩溃。

希望我列出足够的信息以寻求帮助,我无法确切地指出使这个问题有点难以提出的确切问题。

修改

我正在推动视图控制器:

[self performSegueWithIdentifier: @"pushMyControllerSegue" sender: self];

pushMyControllerSegue 定义为 style = push destination = current

它的价值是什么,这是我的 prepareForSegue

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"pushMyControllerSegue"]) {
        MyController *myController = segue.destinationViewController;
        myController.delegate = self;
    }
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

嗯,最终用“乐队援助”解决了这个问题 - 即没有找到根本原因,但为了使其发挥作用而进行了一些攻击。

从调试很多我很确定它与纵向模式下的Master消失有关。正如我之前提到的,切换到不同的选项卡并返回到原始选项卡可以解决问题。所以我尝试以编程方式执行此操作。如果我在标签控制器切换回原始标签之前打开主设备 - 它可以解决问题。如果我在之后打开,它会切换回来,问题仍然存在。

(要切换回我使用performSelector:withDelay,因此确保来回切换标签实际切换标签并且没有被标签栏控制器的内部优化取消。它还允许我在切换时玩已完成)

所以我做了什么(如果这有助于任何人) - 在下面的委托方法

- (void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController

我切换回选定的标签。不需要performSelector:withDelay

可能是苹果方面的一个错误 - 不确定......无论如何,我希望这有助于某人。