问题描述
|
因此,如果我在一个屏幕上,则可以使用pushViewController导航到下一个导航屏幕,然后直接进入下一个屏幕,并使用backButton到上一个屏幕。
前一个屏幕(后退按钮将我们推到的屏幕)...是否有名称? (就像prevIoUsViewController一样)?
这个问题的目标是:
如果我有5个屏幕(分别为1、2、3、4、5)...可以说,我从1-> 3导航,在另一种情况下,我从2-> 3导航。我想说的是,如果\ “ PrevIoUsViewController是1 \”,然后从3导航到4(1-> 3-> 4),否则,如果prevIoUsViewController是2,我想导航到3到5(2-> 3-> 5)...
我该怎么做?
谢谢 !
ps。
我知道我也可以使用另一种方法尝试明智且合乎逻辑的方法,并相应地使用pushViewController。但是,如果有一个解决方案可以检查prevIoUsViewController,它将使我的工作变得轻松,并且将是一次很好的学习体验。
解决方法
您实际上可以通过使用
UINavigationController
的viewControllers
属性来实现。这就是苹果对此的评价:
根视图控制器位于阵列的索引0处,后视图控制器位于索引的n-2处,而顶部控制器位于索引的n-1处,其中n是阵列中的项数。
您的“上一个控制器”是Apple定义的“后视图控制器”,对应于索引n-2:
NSUInteger arraySize = [navController.viewControllers count];
UIViewController* prevController = [navController.viewControllers objectAtIndex:count-2];
, 不,没有previousViewController。 UINavigationController是作为堆栈实现的,因此您可以继续推动视图控制器,并且这些控制器可以将自己弹出堆栈。
仅供参考,如果您尝试查看所有的ViewController堆栈,则UINavigationController具有称为““ viewControllers \”的属性,该属性实现为NSArray。