Iphone 在popToViewController之后NavigationController变为零

Iphone 在popToViewController之后NavigationController变为零,iphone,iphone-sdk-3.0,uinavigationcontroller,Iphone,Iphone Sdk 3.0,Uinavigationcontroller,在我的“[self.navigationcontroller popToViewController:[self.navigationcontroller.viewControllers objectAtIndex:0]动画:是];”之后,我的navigationcontroller变为零 这是我的场景: InsertViewController->[self.navigationController pushViewController:choiceViewController动画:是] [s

在我的“[self.navigationcontroller popToViewController:[self.navigationcontroller.viewControllers objectAtIndex:0]动画:是];”之后,我的navigationcontroller变为零

这是我的场景: InsertViewController->
[self.navigationController pushViewController:choiceViewController动画:是]

[self.navigationController pushViewController:choiceViewController animated:YES];
ChoiceViewController->
[self.navigationController pushViewController:choiceDetailViewController动画:是]

 [self.navigationController pushViewController:choiceDetailViewController animated:YES];

InsertViewController *insertViewController =  [self.navigationController.viewControllers objectAtIndex:0] ;
UINavigationController *secondaryNavigationCtrl = [[UINavigationController alloc] initWithRootViewController:insertViewController];
secondaryNavigationCtrl.navigationBar.barStyle = UIBarStyleBlackOpaque;
[self presentModalViewController:secondaryNavigationCtrl animated:YES];
[secondaryNavigationCtrl release];
[
ChoiceDetailViewController->
 [self.navigationController pushViewController:choiceDetailViewController animated:YES];

InsertViewController *insertViewController =  [self.navigationController.viewControllers objectAtIndex:0] ;
UINavigationController *secondaryNavigationCtrl = [[UINavigationController alloc] initWithRootViewController:insertViewController];
secondaryNavigationCtrl.navigationBar.barStyle = UIBarStyleBlackOpaque;
[self presentModalViewController:secondaryNavigationCtrl animated:YES];
[secondaryNavigationCtrl release];
[

InsertViewController*InsertViewController=[self.navigationController.ViewController对象索引:0];
UINavigationController*secondaryNavigationCtrl=[[UINavigationController alloc]initWithRootViewController:insertViewController];
secondaryNavigationCtrl.navigationBar.barStyle=UIBarStyleBlack不透明;
[self-presentModalViewController:Secondary NavigationCtrl动画:是];
[第二导航Ctrl释放];
[

当在刚刚弹出的InsertView中按下“ok”按钮(self.navigationItem.leftBarButtonItem)时,它会返回到ChoiceDetailViewController,我会执行以下操作: [code][self.navigationController dismissModalViewControllerAnimated:YES];[/code]

之后我做了一个

[self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex:0] animated:YES];

[self.navigationController popToViewController:[self.navigationController.ViewController对象索引:0]已设置动画:是];
返回到InsertViewController,当我再次循环时,我看到我的navigationcontroller为零

知道我做错了什么吗


提前谢谢。

我不确定我是否理解您想做什么,但是,当您返回ChoiceDetailViewController时,我认为您应该执行
[self.navigationController popViewController:…]
而不是
[self.navigationController dismissModalViewControllerAnimated:YES]
因为ChoiceDetailViewController首先以非模态的方式被推到堆栈上。因此,使用您的代码,您实际上忽略了整个navigationController。

不确定这是否解决了您的问题,但我遇到了这个问题,因为实现弹出视图控制器的代码的类实际上得到了po这导致我的self.navigationController为nil,因为它本身正在被删除。我将代码移动到一个未被弹出的类,并且它没有被设置为nil

在堆栈看起来像这样之前,其中一个ViewController会弹出self.navigationController为nil

PopableViewController
   functionThatCallsPopToViewController
PopableViewController
   functionThatCallsPopToViewController
RootViewController
之后

PopableViewController
PopableViewController
RootViewController
   functionThatCallsPopToViewController

由于RootViewController未弹出,因此self.navigationController未设置为nil。唯一棘手的是,现在您需要在其他ViewController中保留对RootViewController的引用。

同样的问题……您解决过这个问题吗?