好的,我花了一段时间对此进行调查,但最后我不得不采用一种解决方法。
在我的情况下,如果“离开”详细视图而不保存详细视图内容,我想显示警报。
我添加了一个实例变量 boolean,最初设置为 false (NO)。
然后,在 viewWillDisappear 中,如果布尔值为 NO,我将其设置为 YES,并显示警报。
然后我将布尔值重置为 NO is viewDidDisappear (这也可以在警报回调中完成)。
不是很优雅,但这似乎工作得很好。
- (void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if ([self isDirty] && ![self showingAlert])
{
[self setShowingAlert:YES];
UIAlertView *alert =
[[UIAlertView alloc]
initWithTitle: @"Save Changes?"
message: @"Use it or lose it, matey."
delegate: self
cancelButtonTitle:@"Save"
otherButtonTitles:@"Don't Save",nil];
[alert show];
[alert release];
}
}
- (void) viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self setShowingAlert:NO];
}