Подтвердить что ты не робот

Определите, было ли отображаемое представление нажато или появилось из кнопки "Назад" на панели навигации

Есть ли способ узнать, появился ли новый контроллер из кнопки навигации или был вставлен в стек? Id нравится перезагружать данные только для нажатия на стек навигации, а не на кнопку "Назад".

4b9b3361

Ответ 1

Начиная с iOS 5.0 вы можете сделать это:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    if (self.isBeingPresented || self.isMovingToParentViewController) {
        // "self" is being shown for the 1st time, not because of a "back" button.
    }
}

Ответ 2

Если ваш push также включает создание экземпляра контроллера представления, поместите свою логику только в режиме viewDidLoad. Он не будет вызван обратно, потому что он уже загружен.

Ответ 3

Вы можете реализовать UINavigationControllerDelegate и переопределить метод `navigationController: didShowViewController: анимированный: '. Затем вам нужно будет проверить возвращаемый контроллер просмотра, чтобы определить, вернулись ли вы с ожидаемого контроллера представления.

- (void)navigationController:(UINavigationController*)navigationController didShowViewController:(UIViewController*)viewController animated:(BOOL)animated
{
    if (yourPushedViewController == viewController)
    {
        // Do something
    }
}