Как скрыть кнопку «Назад» на панели навигации на iPhone?

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


person Chilly Zhong    schedule 05.03.2009    source источник


Ответы (14)


Цель-C:
self.navigationItem.hidesBackButton = YES;

Swift:
navigationItem.hidesBackButton = true

person user8170    schedule 27.04.2009
comment
@ user8170 как скрыть левый элемент barbutton на панели навигации ..? - person rockey; 12.11.2010
comment
Вы не можете скрыть кнопку с помощью self.navigationItem.leftBarButtonItem = nil;. Если вы явно установили leftbarbuttonitem, вы можете использовать self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES; скроет кнопку "Назад". - person rakeshNS; 09.08.2012
comment
В iOS 7 self.navigationItem.leftBarButtonItem = nil; не влияет на кнопку «Назад» при запуске из viewDidLoad, viewWillAppear или viewDidAppear. Эта строка кода действительно работает в viewdidLoad: self.navigationItem.hidesBackButton = YES; - person Alex Zavatone; 14.01.2014
comment
не уверен, помогает ли это, но «я» всегда является контроллером представления, который отображается в верхней части стека контроллера навигации. - person Kunal Balani; 17.01.2014
comment
self.navigationItem.hidesBackButton = ДА; у меня работает в viewDidLoad, ios 7 - person leukosaima; 06.06.2014
comment
self.navigationItem.hidesBackButton = yes; возникает проблема, когда я использую жест смахивания. который показывает backButton - person Bill Xie; 23.03.2017

Лучше всего их объединить, чтобы кнопка возврата была скрыта, даже если вы настроили ее вручную:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
person Skrew    schedule 14.08.2012
comment
Чтобы ответить user716216, он объяснил это одним предложением. Вторая строка кода - это то, что работает для случая по умолчанию. Первая строка кода работает, если вы сами создали и добавили кнопку. - person Alex Zavatone; 14.01.2014

скрыть кнопку возврата с кодом ниже ...

[self.navigationItem setHidesBackButton:YES animated:YES];

или

[self.navigationItem setHidesBackButton:YES];

Также, если у вас есть собственный UINavigationBar, попробуйте следующий код

self.navigationItem.leftBarButtonItem = nil;
person Paras Joshi    schedule 01.05.2013
comment
в любом классе, когда вы использовали этот код, тогда на панели навигации этого класса кнопка назад будет скрыта ... - person Paras Joshi; 29.01.2014

В Swift:

Добавьте это в контроллер

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}
person King-Wizard    schedule 02.12.2014

Используйте код:

 self.navigationItem.backBarButtonItem=nil;
person Gurpreet Singh    schedule 16.06.2012
comment
Это отобразит элемент кнопки задней панели по умолчанию для элемента навигации. developer.apple.com/documentation/uikit/uinavigationitem/ - person Ivan Tkachenko; 05.11.2019

В функции viewDidLoad UIViewController используйте код:

self.navigationItem.hidesBackButton = YES;
person indiefr    schedule 11.04.2014

Не забывайте, что вам нужно вызвать его для объекта, у которого есть контроллер навигации. Например, если у вас есть навигационный контроллер, нажимающий на контроллер панели вкладок с помощью RootViewController, вызов self.navigationItem.hidesBackButton = YES на RootViewController ничего не даст. Вам действительно нужно позвонить self.tabBarController.navigationItem.hidesBackButton = YES

person Tyler    schedule 11.02.2016

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

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
person Bruno Delgado    schedule 30.09.2016
comment
Без этого многие контроллеры без "back button" будут активированы смахиванием назад :) Также обратите внимание, что вам нужно будет включить обратно interactivePopGestureRezognizer, как только пользователь покинет текущую сцену. - person dvp.petrov; 22.01.2021

Добавьте этот код в свой контроллер представления

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
person Bhavsar1311    schedule 09.04.2016

Мне показалось, что ничего из вышеперечисленного не работает, это не имело визуального эффекта. Я использую раскадровки с представлением, которое «встроено» в контроллер навигации.

Затем я на уровне кода добавляю свои menuItems, и по какой-то причине «backButton» виден при визуальной отладке иерархии представлений, а мой значок menuItem отображается под невидимой «кнопкой возврата».

Я попробовал настройки, предложенные в различных методах перехвата, и это не дало результата. Затем я попробовал более жестокий подход и перебрал подпредставление, что также не дало результата.

Я проверил размеры своих иконок и все в порядке. Обратившись к руководству по человеческому интерфейсу Apple, я подтвердил, что мои значки верны. (В моем случае на 1 пиксель меньше 24px 48px 72px).

Самая странная часть - это собственно исправление ...

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

Надеюсь, это кому-то поможет.

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];
person Wayne    schedule 22.06.2017

У меня не во всех случаях, когда я устанавливал

self.navigationItem.hidesBackButton = ДА;

в viewWillAppear или ViewDidLoad, но работал отлично, когда я устанавливал его в инициализации viewController.

person Joe M    schedule 19.02.2018

попробуйте это - self.navigationController?.navigationItem.hidesBackButton = true

person Ahil Rahesh    schedule 22.01.2019

В C # или Xamarin.ios this.NavigationItem.HidesBackButton = true;

person Anisetti Nagendra    schedule 31.05.2019

navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

если вы используете этот блок кода внутри didLoad или loadView работал, но не работал идеально. Если вы посмотрите внимательно, вы увидите, что кнопка «Назад» скрывается при загрузке вашего представления. Выглядит странно.

Какое идеальное решение?

Добавьте компонент BarButtonItem из componentView (Command + Shift + L) на целевую панель навигации viewControllers.

Выберите BarButtonItem set Title = "" на правой панели.

введите здесь описание изображения

person ahmet yilmaz    schedule 17.05.2020