【问题标题】:UINavigationController: How do I delete a view of a stackUINavigationController:如何删除堆栈视图
【发布时间】:2011-02-05 09:45:58
【问题描述】:

假设这是我的堆栈布局

View3     --> Top of the stack
View2
View1
HomeView  --> Bottom of the stack

所以我现在在View3,如果我点击Home按钮,我想加载HomeView,这意味着我需要弹出View3、View2和View1。但是如果我弹出View3,就会显示View2。我不想要那个。我想删除View3、View2和View1,并显示HomeView。知道怎么做吗?

【问题讨论】:

    标签: iphone objective-c uiviewcontroller uinavigationcontroller


    【解决方案1】:

    使用...

    [self.navigationController popToRootViewControllerAnimated:YES];

    【讨论】:

      【解决方案2】:

      您可以使用popToRootViewControllerAnimated: 访问根视图控制器。这将弹出堆栈中除根视图控制器之外的所有视图控制器。在您的情况下,这将是 HomeView。

      [self popToRootViewControllerAnimated:YES];
      


      要访问堆栈中的特定视图,您可以使用popToViewController:animated: 假设您想要弹出第三个视图控制器(从下往上)。在你的情况下,这将是 view2:

      NSArray* viewControllersInStack = self.navigationController.viewControllers;
      UIViewController* targetViewController = [viewControllersInStack objectAtIndex:2];
      [self.navigationController popToViewController:targetViewController animated:YES];
      

      【讨论】:

      • 我在示例中将 homeview 作为 root,但在我的代码中并非如此。 TYVM :)
      • 我试了一下,但它说HomeView 是未定义的,这是有道理的,因为我在View3,所以我没有参考HomeView,对吗?
      • 是的,您需要对HomeView 的引用,您可以通过self.navigationController.viewControllers 属性获得它
      • 我尝试设置参考,但它不起作用。通过任何数组访问它,它很乱,因为你必须跟踪索引。能否请您发布一些有关如何执行 PopToViewController 的示例代码,并通过参考访问?
      【解决方案3】:

      使用popToViewController

      [self.navigationController popToViewController:homeView animated:YES];
      

      【讨论】:

      • 它是如何工作的?文档说你弹出到一个特定的视图控制器,但我一直遇到段错误。你认为你可以给我一个快速的示例代码吗?
      • 它会弹出视图,直到特定的 viewController 位于堆栈的顶部。你能发布一个错误日志和你的一些代码吗?
      • 好吧,假设我在aViewController(假设它已经在堆栈上),我推bViewController,然后在bViewController,我popToViewController:aViewController,好吧,但它说aViewController 是未定义的,这是有道理的,因为我现在在 bViewController。我没有提到aViewController。我错过了什么吗?
      • 没错,正如@Ronnie Liew 所说。你需要一个参考。我通常将这项工作传递给我的代表,该代表引用了所有相关的视图控制器。您可以通过Protocol 执行此操作。 (在你的情况下,试试informal)
      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2017-04-19
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多