在popToViewController之后,NavigationController变为零

时间:2010-04-13 15:47:13

标签: iphone iphone-sdk-3.0 uinavigationcontroller

我的导航控制器在我的“[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,当我再次循环时,我看到我的导航控制器是零...

知道我做错了吗?

提前致谢。

2 个答案:

答案 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的引用。