我遇到了这个问题的想法。 我有一个UITabbarcontroller和2个带有Navigationcontrollers的标签。
我有一组用于导航的ViewControllers。这些ViewControllers在两个选项卡/导航控制器上的使用顺序相同,但数据略有不同。
上一个ViewController正在进行NSURLConnection,并且在connectionDidFinishLoading中:应该使用以下代码显示最后一个viewcontroller:
[self.navigationController popToRootViewControllerAnimated:NO];
[self.navigationController pushViewController:lastViewController animated:YES];
这将弹出到根视图控制器,但永远不会推送最后一个ViewController。 (旁注:这实际上已经工作了一段时间,但是在使用第二个标签栏的导航控制器时也停止了工作)。
此外,如果我注释掉第一行:
//[self.navigationController popToRootViewControllerAnimated:NO];
[self.navigationController pushViewController:lastViewController animated:YES];
显示了最后一个viewcontroller,但是错过了导航栏中的后退按钮,并且没有禁用它。 我怀疑self.navigationcontroller不知何故返回错误的navigationcontroller。这就好像导航控制器“忘记了”视图控制器堆栈一样。
我上下三次检查代码,我找不到任何东西。在这个之前的其他视图控制器被推送和弹出没有任何问题。
感谢您提供任何帮助,我感到困惑!
答案 0 :(得分:0)
你说的话给了我一个主意。我认为self.navigationController在被推后可能被设置为nil,因此,当你按下新的视图控制器时它不会被设置。这样做解决了这个问题! :)
UINavigationController *navigationController = self.navigationController;
[navigationController popToRootViewControllerAnimated:NO];
[navigationController pushViewController:lastViewController animated:YES];