iOS как убрать кнопку назад?

У меня есть приложение с панелью навигации, которое нажимает на контроллер представления экрана входа в систему, а затем нажимает на главное меню. Есть ли способ удалить кнопку «Назад» из главного меню, чтобы пользователь не мог вернуться к экрану входа в систему?

Спасибо!

РЕДАКТИРОВАТЬ: использование Xcode 4.3 и выполнение всей работы на ногах программно.


person jbearden    schedule 29.02.2012    source источник


Ответы (7)


Ты можешь сделать:

[self.navigationItem setHidesBackButton:YES];

В вашем втором контроллере представления (тот, в котором вы хотите скрыть кнопку).

person Peter Sarnowski    schedule 29.02.2012
comment
Возможно, вы захотите переосмыслить использование стека навигации и вместо этого представить модальный VC - см. Ниже. - person LJ Wilson; 29.02.2012
comment
Для справки в будущем, если это не работает для вас, просто поместите этот код в viewDidAppear: и он начнет работать. - person MSU_Bulldog; 02.09.2015
comment
Вы спасли мою жизнь. Большое спасибо. - person Natasha; 26.06.2016
comment
self.navigationItem.hidesBackButton = true для Swift 4+ - person Gerardo Salazar Sánchez; 07.08.2018

Ответ Петерса правильный, хотя я думаю, что лучший вопрос - почему? В такой схеме, как ваша, где вы хотите войти в систему, вместо использования выталкиваемого виртуального канала представьте модальный виртуальный канал и используйте метод делегата, чтобы получить обратно информацию о пользователе, полученную в процессе входа в систему. Я могу опубликовать полный пример кода, если он вам нужен, но похоже, что у вас есть детали, разработанные с вашим процессом входа в систему. Просто используйте:

presentModalViewController

вместо того:

pushViewController

Таким образом, вам не нужно беспокоиться о стеке навигации и делать что-то, что на самом деле не соответствует рекомендациям по пользовательскому интерфейсу.

person LJ Wilson    schedule 29.02.2012

Быстро

self.navigationItem.hidesBackButton = true
person Hamzah Malik    schedule 30.10.2015
comment
Это работает, но жест возврата будет утерян! - person Tai Le; 11.11.2020

Приведенный выше код у меня не сработал. Как предлагается в UINavigationItem setHidesBackButton: ДА не помешает вернуться назад , Мне пришлось использовать:

[self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]]];
person Yoga    schedule 03.02.2013

Попробуй это:

[self.navigationItem setHidesBackButton:YES];

Or

[self.navigationItem setHidesBackButton:YES animated:YES];
person Flaviano Gomes    schedule 03.12.2013

Пробовал в Xcode7.3.1, быстро

self.navigationItem.setHidesBackButton(true, animated: true)

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

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

self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIView())
person Codingpan    schedule 22.09.2016

В случае, если вам нужно переключить отображение / скрытие кнопки возврата:

navigationItem.hidesBackButton = true/false

И держите жест назад:

extension YourViewController: UIGestureRecognizerDelegate {}

А также

navigationController?.interactivePopGestureRecognizer?.isEnabled = true
navigationController?.interactivePopGestureRecognizer?.delegate = self
person Tai Le    schedule 11.11.2020