【问题标题】:NavigationController becomes nil after popToViewController在 popToViewController 之后 NavigationController 变为 nil
【发布时间】:2011-02-07 12:41:58
【问题描述】:

在“[self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex:0] animated:YES];”之后,我的 navigationcontroller 变为 nil

这是我的场景: 插入视图控制器 ->

[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.navigationControllerdismissModalViewControllerAnimated:YES]; [/代码]

之后我做了一个


[self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex:0] animated:YES];
回到InsertViewController,当我再次执行循环时,我看到我的navigationcontroller 为零......

知道我做错了什么吗?

提前致谢。

【问题讨论】:

  • 同样的问题...你解决了吗?

标签: iphone iphone-sdk-3.0 uinavigationcontroller


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    PopableViewController
       functionThatCallsPopToViewController
    PopableViewController
       functionThatCallsPopToViewController
    RootViewController
    

    之后

    PopableViewController
    PopableViewController
    RootViewController
       functionThatCallsPopToViewController
    

    由于 RootViewController 没有弹出 self.navigationController 没有设置为零。唯一棘手的是,现在您需要在其他 viewController 中保留对 RootViewController 的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 2021-01-31
      • 2020-05-11
      • 1970-01-01
      相关资源
      最近更新 更多