有没有办法判断新控制器是来自导航后退按钮还是被推入堆栈?我想重新加载数据只是为了推送导航堆栈,而不是按下后退按钮。
答案 0 :(得分:21)
从iOS 5.0开始,你可以这样做:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (self.isBeingPresented || self.isMovingToParentViewController) {
// "self" is being shown for the 1st time, not because of a "back" button.
}
}
答案 1 :(得分:1)
如果您的推送还包括实例化视图控制器,请将您的只推送逻辑放在viewDidLoad
中。它不会被调用,因为它已被加载。
答案 2 :(得分:1)
您可以实现UINavigationControllerDelegate并覆盖`navigationController:didShowViewController:animated:'方法。然后,您必须检查返回的视图控制器,以确定您是否从预期的视图控制器返回。
- (void)navigationController:(UINavigationController*)navigationController didShowViewController:(UIViewController*)viewController animated:(BOOL)animated
{
if (yourPushedViewController == viewController)
{
// Do something
}
}