【问题标题】:Pop THE RootViewController弹出 RootViewController
【发布时间】:2015-01-03 02:58:08
【问题描述】:

我正在开发一个作为第一个视图控制器具有 UIViewController 的应用程序。 此控制器推送包含其他控制器的 NavigationViewController。 现在我需要弹出 NavigationController 的 RootViewController 以回到最初的 UIViewController。 我试过了

[self dismissViewControllerAnimated:YES completion:nil];

应用程序崩溃(“Tread1:EXC_BAD_ACCESS(code=1, address= ......)”)。 我试过了

[self.navigationController popViewControllerAnimated:YES];

什么都没有发生。

初始 UIViewController 调用

 [self performSegueWithIdentifier:@"MyIdentifier" sender:self];

在 UIBuilder 中,segue 的类型是“Show(e.g. Push)”

然后我有一个 NavigationViewcontroller,其中包含 RootViewController 和另一个 Viewcontroller。 我想要实现的是从 RootViewController 返回到第一个 viewcontroller(navigationcontroller 之外的那个)。所以我应该在那里有导航控制器。

我错过了什么?

【问题讨论】:

  • 什么也没发生的原因是self,不管是谁,都没有navigationController。您正在与错误的视图控制器交谈。这里的问题是您需要以良好的顺序展开视图控制器的整个“堆栈”;您可能需要多个命令...不幸的是,您的问题并未描述您实际的全套视图控制器,因此无法提供任何进一步的帮助。
  • 我认为您需要查看您的视图控制器层次结构。 UIViewController 如何在没有自己的导航控制器的情况下“推动” UINavigationController?您最好将 UINavigationController 显示为模态控制器。
  • 你可以试试,[self.navigationController popToRootViewControllerAnimated:YES];
  • 你能告诉我你是如何推动导航控制器的吗?当尝试这样的事情时:[self.navigationController pushViewController:testNavigationController animated:NO] 它会抛出这个异常“不支持推送导航控制器”。
  • 只有当你的初始 UIViewController 在导航控制器中时才可以推送视图控制器。在这种情况下,您已将导航控制器推送到另一个导航控制器的视图层次结构中。因此,您调用 self.navigationController.navigationController 来访问主导航控制器。尝试使用 [self.navigationController.navigationController popToRootViewControllerAnimated:YES]

标签: ios objective-c uinavigationcontroller


【解决方案1】:

显然我有几个 GestureRecognizer 仍然存在,导致应用程序崩溃。 正确的方法是:

[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多