我有一个带3个视图控制器的应用程序。我使用push segues从A-> B-> C推出。在B推送到C之后,如何从堆栈中删除B,只留下两个视图,C在A?
之上答案 0 :(得分:0)
UINavigationController
有一组视图控制器,它维护它来管理导航堆栈。
较小索引处的对象在堆栈中较低,然后是较高索引处的对象。最高索引处的对象位于导航堆栈的顶部,索引0处的对象是根视图控制器。
您可以访问viewControllers
属性的此数组视图。对于导航控制器中的任何UIViewController
,只需:
self.navigationController.viewControllers
您可以使用它来获取当前状态的数组,根据需要对其进行操作,然后重置它。
例如:
NSArray *oldNavigationStack = self.navigationController.viewControllers;
NSArray *newNavigationStack = @[[oldNavigationStack firstObject],
[oldNavigationStack lastObject]];
self.navigationController.viewControllers = newNavigationStack;