我需要确定先前在UIViewController
中显示的UINavigationController
。我的导航深度为3级,在2级我需要确定我是否从第1级推进到此处,或者是否从第3级弹出这里。我怎样才能轻松完成?
答案 0 :(得分:4)
实现UINavigationControllerDelegate方法:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
并查询它以找出当前显示的视图控制器:
navigationController.topViewController
这是你来自的那个。
答案 1 :(得分:3)
您可以使用viewControllers属性查看整个UINavigationController堆栈。
int count = [navigationController.viewControllers count];
topController = [navigationController.viewControllers objectAtIndex:count - 1];
previousController = [navigationController.viewControllers objectAtIndex:count - 2];
//...
//...
rootController = [navigationController.viewControllers objectAtIndex: count - count];
答案 2 :(得分:2)
iOS 5.0添加了[UIViewController isMovingToParentViewController]。在viewWillAppear
和viewDidAppear
期间,如果您来自编号较低的视图控制器YES
,则会返回NO
。遗憾的是,该名称令人困惑 - 你会认为[UIViewController isMovingFromParentViewController]是正确的调用方式。
但是,代表所有第二代设备都停留在iOS 4.2.1上的cheapskates,除非你真的需要,否则请不要使用iOS 5功能。