我的导航控制器在我的“[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];”
之后变为零这是我的场景: InsertViewController - >
[self.navigationController pushViewController:choiceViewController animated:YES];
ChoiceViewController - >
[self.navigationController pushViewController:choiceDetailViewController animated:YES];
ChoiceDetailViewController - >
InsertViewController *insertViewController = [self.navigationController.viewControllers objectAtIndex:0] ;
UINavigationController *secondaryNavigationCtrl = [[UINavigationController alloc] initWithRootViewController:insertViewController];
secondaryNavigationCtrl.navigationBar.barStyle = UIBarStyleBlackOpaque;
[self presentModalViewController:secondaryNavigationCtrl animated:YES];
[secondaryNavigationCtrl release];
[
当InsertView中的“ok”按钮(self.navigationItem.leftBarButtonItem)刚刚启动时,它会回到ChoiceDetailViewController并且我做了一个 [code] [self.navigationController dismissModalViewControllerAnimated:YES]; [/代码]
之后我做了一个
[self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex:0] animated:YES];
返回到InsertViewController,当我再次循环时,我看到我的导航控制器是零...
知道我做错了吗?
提前致谢。
答案 0 :(得分:0)
我不确定我是否理解你要做的事情,但是当你回到ChoicheDetailViewController我认为你应该做[self.navigationController popViewController:...]
而不是[self.navigationController dismissModalViewControllerAnimated:YES]
因为ChoicheDetailViewController被推上了首先以非模态方式堆叠。因此,使用您的代码,您实际上是在解雇整个navigationController。
答案 1 :(得分:0)
不确定这是否解决了您的问题,但我遇到了这个问题,因为实现弹出视图控制器的代码的类实际上已经弹出。这导致我的self.navigationController为零,因为它本身被删除了。我将代码移动到一个没有弹出的类,它没有设置为nil。
在堆栈看起来像这样之前,其中一个ViewControllers弹出self.navigationController是nil。
PopableViewController
functionThatCallsPopToViewController
PopableViewController
functionThatCallsPopToViewController
RootViewController
之后
PopableViewController
PopableViewController
RootViewController
functionThatCallsPopToViewController
由于未弹出RootViewController,因此self.navigationController未设置为nil。唯一棘手的是,现在你需要在其他viewControllers中保留对RootViewController的引用。