popToViewController无法正常工作

时间:2013-10-03 18:27:57

标签: ios xcode uinavigationcontroller

我正在调用UINavigationController的{​​{1}}选择器,但它没有效果。该应用程序不会崩溃或冻结,当前viewcontroller上的所有触摸元素保持不变。

请参阅下面的屏幕截图。我在执行或控制台中没有明显错误,除了没有任何反应这一事实。

我考虑过的事情:

  • 我是主线程吗?是的,我确保这一点 popToViewController在我的屏幕截图顶部调用。
  • 是 想要的viewcontroller已经被推了?是的,你可以看到这是 在屏幕截图的调试面板中为true。 performSelectorOnMainThread就在那里。
  • 在我尝试popTo之前,我是否在一个呈现的模态视图控制器中?不,这发生在没有任何介绍的阶段。
  • 我在各个地方拨打的提醒是否是问题的一部分?很可能 - 也许他们导致当前的viewcontroller没有显示?

Screenshot of XCode showing execution halted right before attempting to popTo

请注意,在执行的这一点上,有时刚刚运行了第263-270行的代码,这清除了根导航控制器的viewControllers数组。这意味着屏幕上当前显示的视图控制器甚至不再在数组中。那会不会搞乱popTo?

类似的问题:

我正在运行XCode 5.0(5A1413),在带有iOS 7.2的iPhone 5上进行编译和运行。

2 个答案:

答案 0 :(得分:1)

你可以尝试一下吗?

 [self.mRootController popToRootViewControllerAnimated:NO];

并且自我符号很重要。 :)

答案 1 :(得分:1)

检查来自popToViewController:animated:方法的返回结果 - 这将返回导航控制器从堆栈中弹出的视图控制器数组,以便与您的方法相对应。如果它是零,那意味着它没有找到它正在寻找的控制器。如果它包含正确的结果,那么它会指示导航控制器认为它正在按照您的要求进行,问题出在其他地方。

您的CXLoginViewController中是否有可能响应viewWillAppear: / viewDidAppear:并更改导航堆栈的代码?您的自定义导航控制器中是否有可能未正确实现方法popToViewController:animated:的内容(过去发生在我身上)?

如果您所指的警报是第235行的警报,就在performSelectorOnMainThread:电话之后,可能会导致一些问题。 performSelectorOnMainThread将运行循环调用的方法(由选择器表示)排队。在调用之后立即与UI混淆可能会有问题 - 您是否尝试过发出警报?