UINavigationController: Как отменить событие кнопки возврата?

В моем UIViewController у меня есть UINavigationController с кнопкой возврата по умолчанию. Когда пользователь нажимает кнопку «Назад», должно появиться предупреждающее сообщение: «Вы действительно хотите вернуться?». Я знаю, что невозможно перехватить событие кнопки возврата. Возможно только использование viewWillDisappear и установка флага:

- (void)viewWillDisappear:(BOOL)animated {
    if (backBtnPressed) {
        UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Question" message:@"Do you really want to go back?" delegate:self cancelButtonTitle:@"No" otherButtonTitles: @"Yes", nil] autorelease];
        [alert show];   
    }
}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
        // don't go back!
        // cancel the back button event
    }
    else if (buttonIndex == 1) {
        // go back
    }
}

Но с этим кодом у меня нет шансов! Я не могу остановить событие кнопки "Назад", не так ли? не так ли?

Должен ли я написать собственную кнопку возврата и установить ее как leftBarButtonItem ? Или есть у кого отличная идея? : -)

Спасибо за вашу помощь!

17
задан Manni 25 February 2011 в 08:34
поделиться