UINavigationController:willShowViewController 问题
Posted
技术标签:
【中文标题】UINavigationController:willShowViewController 问题【英文标题】:UINavigationController:willShowViewController Question 【发布时间】:2011-09-14 19:13:43 【问题描述】:我对这个委托消息感到困惑。我在 PopupViewController 中有一个导航控制器。当我推送一个新的 viewController 时,在新的 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
有没有人偶然发现类似的东西?
【问题讨论】:
【参考方案1】:在UINavigationController Class Reference 中进行了一些挖掘,看起来您可以使用UINavigationController
类的viewControllers
属性。
根视图控制器(导航堆栈的底部)位于索引0
,后视图控制器(刚刚被覆盖)位于索引n-2
,topViewController
属性位于索引@ 987654330@ 其中n
是数组中视图控制器的数量。
从 ios 7 和 Xcode 5.x 开始,您现在可以将 firstObject
消息发送到 viewControllers
属性返回的数组以获取根视图控制器。同样,topViewController
属性可以通过将lastObject
消息发送到viewControllers
属性返回的数组来访问。
【讨论】:
以上是关于UINavigationController:willShowViewController 问题的主要内容,如果未能解决你的问题,请参考以下文章