Какой метод вызывается при нажатии кнопки «Назад» в контроллере навигации?

#ios #xcode #controller #navigation #back-button

#iOS #xcode #контроллер #навигация #кнопка возврата

Вопрос:

Я хочу сохранить базу данных при нажатии кнопки «Назад» в контроллере навигации.

поэтому я бы вставил код в метод.

Какой метод вызывается при нажатии кнопки «Назад» в контроллере навигации?

Комментарии:

1. Используйте переменную флага. Если DB не обновлен, то updated-DB в методе viewWillDisappear. Это должно сработать.

Ответ №1:

Чтобы выполнить то, что вы просили, посмотрите на UINavigationControllerDelegate протокол, а именно метод:

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
 

когда аргумент ViewController больше не является вашим контроллером просмотра, вам следует сохранить.

Однако это viewWillDisappear: может быть лучшей (и намного более простой) идеей.

Ответ №2:

Возможно, это неуместное использование, но это сработало для меня. Не забудьте установить делегат UINavaigationController.

 - (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
                                   animationControllerForOperation:(UINavigationControllerOperation)operation
                                                fromViewController:(UIViewController *)fromVC
                                                  toViewController:(UIViewController *)toVC
{
    NSLog(@"from VC class %@", [fromVC class]);
    if ([fromVC isKindOfClass:[ControllerYouJustPopped class]])
    {
        NSLog(@"Returning from popped controller");

    }

    return nil;
}