Программный вызов кнопки возврата контроллера навигации на iOS

85

В приложении для iPhone на основе UINavigationController в методе я хотел бы выполнить программный эквивалент нажатия кнопки «Назад» и возврата к просмотру.

т.е. автоматически нажмите кнопку «Работа», как показано здесь:

Изображение контроллера навигации

Могу ли я сделать общий вызов iOS или требуется дополнительная информация?

Обербаум
источник

Ответы:

189

UINavigationController«S -popViewControllerAnimated:метод должен делать то , что вы хотите:

[navigationController popViewControllerAnimated:YES];
Стив Харрисон
источник
12
потрясающе, спасибо Стиву и Нильсу. Я использовал решение [self.navigationController popViewControllerAnimated: YES]; easy;)
oberbaum
это отлично работает, за исключением добавленных в uitabbar контроллеров просмотра. какие-нибудь подсказки ??
virata 05
1
Я добавил, [self.navigationController popViewControllerAnimated:YES];но он ничего не делает, однако есть предупреждение о нажатии этой кнопки, которая работает.
mohsin.mr
Хм, у меня пустой экран, приложение, которое не отвечает, и следующее в консоли: «Завершение перехода навигации в непредвиденном состоянии. Дерево вложенного представления панели навигации может быть повреждено».
Kurt
24

Предполагая, что вы на самом деле не хотите нажимать кнопку программно, а просто копируете результат нажатия кнопки, вы должны указать контроллеру навигации, чтобы он вытолкнул текущий контроллер представления.

[self.navigationController popViewControllerAnimated:YES];

Это удалит его из стека и вернет вас к предыдущему контроллеру представления.

Кевин Эллиотт
источник
21

Swift 3.0

Вернуться к корневому представлению

self.navigationController?.popToRootViewController(animated: true)

Вернуться к предыдущему виду

self.navigationController?.popViewController(animated: true)

Swift 2.3

Вернуться к корневому представлению

self.navigationController?.popToRootViewControllerAnimated(true)

Вернуться к предыдущему виду

self.navigationController?.popViewControllerAnimated(true)
Тал Цион
источник
7

Вам следует позвонить

popViewControllerAnimated:

что противоположно добавлению контроллеров представления с pushViewController:animated:

Замок Нильса
источник
6
[self.navigationController popViewControllerAnimates:YES];

- лучший вариант, но если вы не принадлежите к тому же классу контроллера представления или ваш делегат изменяется до вызова метода кнопки возврата, вы также можете попробовать:

сначала вам нужно определить кнопку возврата ---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

а затем в методе backButtonTapped вы можете вызвать:

[self.navigationController pushViewController:desiredViewController animated:YES];
Нишант Махаджан
источник