知道-viewWillAppear何时触发但-viewWillDisappear没有触发

时间:2010-08-10 21:14:45

标签: iphone objective-c cocoa-touch ipad

有没有办法知道视图控制器在-viewWillAppear-viewWillDisappear之间的视图控制器生命周期中的某个位置?

我问,因为我想确定当我的视图不在屏幕上或者即将从屏幕上消失时,方法不会被触发。当视图即将从屏幕上消失时,我无法在运行时明确检查的某些对象可能会或可能不会被释放,因此,显然,与它们交互可能会导致message sent to deallocated instance错误。

目前,我正在跟踪BOOL,如此:

- (void)viewWillAppear:(BOOL)animated {
    isOnScreen = YES;
    [super viewWillAppear:animated];
}

- (void)willWillDisappear:(BOOL)animated {
    isOnScreen = NO;
    [super viewWillAppear:animated];
}

我的方法看起来像这样:

if (isOnScreen) [self doSomething];

有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

你的方式似乎是最简单的方法,如果不是最强大的。 (简单地检查视图的实例是否存在似乎是正确的方法(如果尚未解除分配))。

我也真的不明白这个的目的,除非你有另一个视图控制器运行与视图控制器有关的方法,显示你正在使用布尔值。在这种情况下,它更多的是设计问题,而不是维护问题。

答案 1 :(得分:0)

使用viewDidDisappear

- (void)viewDidDisappear:(BOOL)animated {
    // Do stuff that has to be done when this view is off screen.
}