【问题标题】:why is my viewcontroller not in the window hierarchy?为什么我的视图控制器不在窗口层次结构中?
【发布时间】:2013-01-07 08:45:07
【问题描述】:

使用故事板,MainMenuViewController 以模态方式呈现 Number1ViewController:

-(void) goToNumbers {

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

}

然后 Number1ViewController 呈现 Number2ViewController 如下:

-(void)nextLevel {

     [self performSegueWithIdentifier: @"segueToLevel2" sender: self];
}

xCode 然后产生这个警告:

2013-01-23 12:09:49.873 ToddlerTeacherMini[7574:907] Warning: Attempt to present <Number2ViewController: 0x1fddc720> on <Number1ViewController: 0x1fdc7380> whose view is not in the window hierarchy!

我在网上看到的有关此警告的所有内容都表明您不能在另一个 VC 的 viewDidLoad 方法中显示 VC,将您的代码移动到 viewWillAppear 方法将解决此问题。我不是从 viewDidLoad 调用这个 segue,而是我稍后调用它,所以我不确定为什么会这样。

我在我的应用程序的其他地方类似地展示了 VC,没有问题并且无法弄清楚这里有什么不同,有什么帮助吗?

要明确,我的应用程序中的一切似乎都按预期工作,我只是不想忽略此消息,让它稍后回来咬我。


根据 Todd Kerpelman 的建议,我调查了调用 nextLevel 方法的位置。断点并没有告诉我太多,但是用 NSLog 进一步挖掘我想出了这个:

-(void)nextLevel {


    if (nextLevelHasNotBeenCalled == 0){

       [self performSegueWithIdentifier: @"segueToLevel2" sender: self];
        NSLog(@"Segue was called here.");

    }

    nextLevelHasNotBeenCalled ++;
    NSLog(@"Next level has been called %i times!", nextLevelHasNotBeenCalled);


}

日志:

2013-01-26 02:04:12.579 ToddlerTeacherMini[9203:907] Segue was called here.
2013-01-26 02:04:12.593 ToddlerTeacherMini[9203:907] Next level has been called 1 times!
2013-01-26 02:04:14.789 ToddlerTeacherMini[9203:907] Next level has been called 2 times!

现在很清楚 nextLevel 被调用了两次,这就是导致我的问题的原因。

【问题讨论】:

    标签: uiviewcontroller ios6 xcode4.5 xib uistoryboardsegue


    【解决方案1】:

    这听起来像是您的代码意外调用nextLevel 而您没想到的情况。 (可能是在 Number1ViewController 的 viewDidLoad 方法中调用了一些不相关的方法的副作用。)

    您是否尝试在 nextLevel 方法中添加断点并查看它的调用方式/位置?这可能是至少确认(或消除)这种可能性的最佳方式。

    【讨论】:

    • 根据您的建议添加断点。 nextLevel 正在按预期而不是之前被调用。
    • 确保我从 viewDidLoad 中获取了所有内容并将其移至 viewWill Appear,没有任何变化。这令人费解
    • 你搞定了,伙计。感谢您为我指明正确的方向。我自己已经找了很长时间了。现在我有一个巧妙的小方法可以在未来测试这些类型的问题。
    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    相关资源
    最近更新 更多