Лучшее решение, которое я обнаружил для обнаружения кнопки обратной кнопки UINavigationController (pre-iOS 5.0), заключается в проверке того, что текущий контроллер просмотра отсутствует в стеке контроллера представления контроллера навигации.
Возможно, безопаснее проверить это условие в - (void)viewDidDisappear:(BOOL)animated
как логически, к моменту вызова этого метода было бы крайне вероятно, что диспетчер представлений был удален из стека.
Pre-iOS 5.0:
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if (![[self.navigationController viewControllers] containsObject:self]) {
// We were removed from the navigation controller's view controller stack
// thus, we can infer that the back button was pressed
}
}
iOS 5.0+ вы можете использовать -didMoveToParentViewController:
- (void)didMoveToParentViewController:(UIViewController *)parent
{
// parent is nil if this view controller was removed
}