如何知道堆栈中的哪些视图(或视图控制器)?

时间:2015-10-30 14:15:07

标签: ios swift uiviewcontroller

据我所知,当应用程序启动时,第一个视图控制器被加载并显示他的视图。然后导航到下一个视图控制器,前一个视图控制器保持堆叠状态。因此,如果要返回,则必须关闭当前视图控制器,以便当前VC从堆栈中清除。

我想检查我对堆栈的看法,因为我的故事板变得有点复杂,并且想确保我做的一切正确。我正在寻找以模态方式呈现的视图以及在导航控制器中呈现的视图的解决方案。

如何检查哪些视图控制器处于堆叠状态?

我做了一个较长的介绍,因为我不确定我是否使用了适当的术语,我愿意纠正错误。

2 个答案:

答案 0 :(得分:2)

假设您位于最顶层(或任何)UIViewController,并且您正在使用UINavigationController(屏幕顶部带有导航栏的那个),那么

self.navigationController.viewControllers 

为您提供堆栈上所有视图控制器的数组。

如果你以模态方式呈现,那么你需要迭代self.presentingViewController及其presentingViewController等等,直到presentViewController为null并创建你的数组。

但是,请不要陷入视图控制器的堆叠!当您将此视为问题的解决方案时,您最容易走错路。更好地重新访问您的问题和应用程序的导航架构。

答案 1 :(得分:0)

您可以在UINavigationControllers上查看属性viewControllers。 viewController是一个View Controllers数组 - 你可以访问这些元素中的每一个。

 UIViewController *viewController = self.navigationController.viewControllers[i];