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

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

Ответ 1

Objective-C:
  self.navigationItem.hidesBackButton = YES;

Swift:
  navigationItem.hidesBackButton = true

Ответ 2

Лучший способ - объединить их, поэтому он скроет кнопку "Назад", даже если вы настроите ее вручную:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

Ответ 3

скрыть кнопку со следующим кодом...

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

или

[self.navigationItem setHidesBackButton:YES];

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

self.navigationItem.leftBarButtonItem = nil;

Ответ 4

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

 self.navigationItem.backBarButtonItem=nil;

Ответ 5

В Swift:

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

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}

Ответ 6

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

self.navigationItem.hidesBackButton = YES;

Ответ 7

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

Ответ 8

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

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

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

Ответ 9

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

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

Ответ 10

Для меня ни одно из вышеизложенных, похоже, не работало, оно не имело визуального эффекта. Я использую раскадровки с представлением, "встроенным" в контроллер навигации.

Затем я на уровне кода добавляю свои элементы меню, и по какой-то причине "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];

Ответ 11

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

self.navigationItem.hidesBackButton = YES;

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

Ответ 12

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