Есть ли способ узнать, появился ли новый контроллер из кнопки навигации или был вставлен в стек? Id нравится перезагружать данные только для нажатия на стек навигации, а не на кнопку "Назад".
Определите, было ли отображаемое представление нажато или появилось из кнопки "Назад" на панели навигации
Ответ 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
}
}