Программный вызов кнопки возврата контроллера навигации на 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];
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.