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

Mik*_*ynn 11 objective-c uiviewcontroller ios

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

rma*_*ddy 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.
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果视图控制器是选项卡栏控制器选项卡上的第一个视图控制器,则此操作无效.它将在第一次工作,但此后切换到它的选项卡将看起来好像是一个后退动作,因为既不是'isBeingPresented`也不是`isMovingToParentViewController`都是真的.这种情况很少见,但如果这是你的情况,请查看http://stackoverflow.com/a/40801594/5152481 (2认同)