在UINavigation控制器中的不同'layers'之间跳转



我遇到了导航控制器的一个小问题。我已经设置了一个带有两个"分支"的导航控制器。类似于aviewController1>aViewController2>aviewController 3,另一个分支是biewController1>bviewController2。现在我想做的是选择从当前位置转到另一个分支的底部(第一个视图)(例如aviewController3>bviewController1等)。显然,一个简单的[self.navigationController addSubview:someview.view]无法完成这项工作,因为它只会让我进入那个视图,并且仍然会保留导航控制器的当前堆栈计数。我能对怎么做有一些想法吗?

只需多次调用pop就可以弹出多个堆栈。如果在animated设置为NO的情况下进行所有popViewController:animated:调用,则应该是无缝的。

或者,导航控制器有一个setViewControllers:animated:方法,可以将整个堆栈交换为一组不同的视图控制器。使用它,您可以将现有的视图控制器堆栈复制到一个可变数组中,删除不需要的堆栈,附加所需的堆栈,然后一次性用新堆栈替换旧堆栈。

由于导航控制器基本上是一个堆栈,因此安全的方法是简单地弹出a3、弹出a2、弹出a1,然后按下b1。

如果分支是您的根控制器,那么您可以通过执行popto根控制器

来加速它

最新更新