我对此委托消息感到困惑。我在PopupViewController中有一个导航控制器。当我推送一个新的viewController时,我不知道它被当前显示的是什么是viewController,在新的一个被推送之前......
我已经尝试过获取navigationController.topViewController& navigationController.visibleViewContrller,但是它们总是等于它将被推送的viewController ...看起来我在>>推送视图后收到消息
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
UIViewController *currentViewController = navigationController.topViewController;
if(currentViewController == viewController){
/// THIS IF STATEMENT IS ALWAYS TRUE
}
}
有没有人偶然发现类似事情?
答案 0 :(得分:5)
在UINavigationController Class Reference中进行了一些挖掘,看起来您可以使用viewControllers
类的UINavigationController
属性。
根视图控制器(导航堆栈的底部)位于索引0
,后面的视图控制器(刚被覆盖的控制器)位于索引n-2
和{{3} }属性位于索引n-1
,其中n
是数组中视图控制器的数量。
从iOS 7和Xcode 5.x开始,您现在可以将firstObject
消息发送到viewControllers
属性返回的数组,以获取根视图控制器。同样,可以通过将topViewController
消息发送到lastObject
属性返回的数组来访问viewControllers
属性。