Как сказать, когда кнопка возврата нажата в UINavigationControllerStack

Можно ли проверить, нажата ли кнопка "Назад" в стеке UINavigationController? Я попытался добавить действие и цель в self.navigationItem.backBarButtonItem безрезультатно.

У кого-нибудь есть какие-либо решения?

Ответ 1

Вы можете попробовать:

Напишите в вашем ViewController:

UIBarButtonItem *backBt = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageNameOfBackButton"] style:UIBarButtonItemStyleBordered target:self action:@selector(backBt_touch:)];
self.navigationItem.leftBarButtonItem = backBt;

И метод действия:

- (void)backBt_touch:(id)sender {
  [self.navigationController popViewControllerAnimated:YES];
}

Вам нужно сделать снимок, который вы хотите.

Анимация скрытой кнопки при появлении viewController - это не та же анимация iOS!

P/s: enter image description here Я получаю его от симулятора. Надеюсь, это полезно!:)

Ответ 2

Один из способов добиться этого - переопределить viewWillDisappear в UIViewController, который будет отображаться при нажатии кнопки "Назад":

- (void)viewWillDisappear:(BOOL)animated {
    if (self.isMovingFromParentViewController) {
        // handle back button press
    }
}

Очевидно, это не напрямую перехватывает прессу на самой задней кнопке, но дает вам возможность выполнить логику в это время.