确定显示的视图是否已被推送或来自导航栏中的后退按钮

时间:2013-12-30 23:13:39

标签: ios objective-c uiviewcontroller

有没有办法判断新控制器是来自导航后退按钮还是被推入堆栈?我想重新加载数据只是为了推送导航堆栈,而不是按下后退按钮。

3 个答案:

答案 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
    }
}