在UINavigationController中的不同“层”之间跳转

时间:2012-01-30 15:47:55

标签: ios uiview uinavigationcontroller

我遇到了导航控制器的一个小问题。我已经设置了一个带有2个“分支”的导航控制器。 像aviewController1> aViewController2> aviewController3,另一个分支是biewController1> bviewController2。现在我想做的是选择从当前位置到另一个分支的底部(第一个视图)(例如aviewController3> bviewController1等)。显然一个简单的[self.navigationController addSubview:someview.view]将无法完成这项工作,因为它只会让我进入该视图并仍然保留导航控制器的当前堆栈计数。我可以就如何做到这一点获得一些想法吗?

2 个答案:

答案 0 :(得分:2)

只需多次调用pop即可弹出多个堆栈。如果你把所有的popViewController:animated:调用动画设置为NO,它应该是无缝的。

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

答案 1 :(得分:1)

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

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

相关问题