Я создал пользовательский класс UINavigationController, чтобы у меня было всплывающее окно UIAlertView и вы могли бы сказать, действительно ли вы хотите оставить это представление при нажатии кнопки «Назад».
У меня есть заказчик, как показано ниже:
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
if([[self.viewControllers lastObject] class] == [weddingSetupController class]){
UIAlertView *exitAlert = [[UIAlertView alloc]
initWithTitle:@"Are you sure?"
message:@"By leaving the setup, all current changes will be lost. The setup can be retsrated later if you decide to leave now. However, it is recomened for your best experience that you complete the setup."
delegate:self cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil
];
[exitAlert show];
return nil;
}
else {
return [super popViewControllerAnimated:animated];
}
}
Работает хорошо, хотя проблема в том, что, если я скажу «Нет», он останется в том же виде, не отображая родительский вид, но панель навигации выскочит. Таким образом, я получаю представление не всплывающим, но панель всегда возвращается в состояние родительского представления.
Надеюсь, что это имеет смысл и может помочь мне решить эту проблему, спасибо.