Представление предупреждений не блокируется - по сути, к тому времени, когда вы выбираете опцию, ваш контроллер представления уже видел viewWillDisappear, viewDidDisappear и, вероятно, dealloc, то есть он больше не существует.Предполагая, что вы используете UINavigationController, если идея состоит в том, чтобы запросить пользователя перед переходом назад, вы должны переопределить
- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated;
{
MyAppDelegateName* delegate = (MyAppDelegateName*)[[UIApplication sharedApplication] delegate];
if([delegate.navigationController.topViewController conformsToProtocol:@protocol(ExitConfirmDelegate)]) {
if([(UIViewController<ExitConfirmDelegate>*)delegate.navigationController.topViewController shouldConfirmExit]) {
return;
}
[delegate.navigationController popViewControllerAnimated:animated];
}
}
в вашем UINavigationBar, где ExitConfirmDelegate - это протокол с BOOL shouldConfirmExit.Ваш контроллер представления будет реализовывать этот протокол и возвращать «НЕТ», если вид ожидающего оповещения виден.Затем, когда пользователь щелкает опцию, просто снова вызовите popViewControllerAnimated из метода clickedButtonAtIndex.