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


286

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

758

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

Swift:
navigationItem.hidesBackButton = true

  0

@ user8170 как скрыть левый барбuttonitem на панели навигации ..? 11 ноя. 102010-11-11 21:46:07

+7

@vakio, который на самом деле не работает;) 15 мар. 122012-03-15 14:29:39

+9

Вы не можете скрыть откидывание на 'self.navigationItem.leftBarButtonItem = nil;'. Если вы задали leftbarbuttonitem явно, вы можете использовать 'self.navigationItem.leftBarButtonItem = nil;'. 'self.navigationItem.hidesBackButton = YES;' скроется кнопка «Назад» Пункт 09 авг. 122012-08-09 11:28:33

  0

В iOS 7, self.navigationItem.leftBarButtonItem = nil; не влияет на кнопку «Назад» при выпуске из viewDidLoad, viewWillAppear или viewDidAppear. Эта строка кода работает в viewdidLoad: self.navigationItem.hidesBackButton = YES; 14 янв. 142014-01-14 16:05:41

+2

не уверен, что это помогает, но «я» всегда является контроллером представления, который отображается сверху стека контроллера навигации. 17 янв. 142014-01-17 17:01:15

  0

self.navigationItem.hidesBackButton = YES; работает для меня в viewDidLoad, ios 7 05 июн. 142014-06-05 20:48:08

  0

self.navigationItem.hidesBackButton = yes; сделайте вопрос, когда я использую жестом салфетки. Он показывает backButton 23 мар. 172017-03-23 09:23:33


5

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

self.navigationItem.backBarButtonItem=nil; 

36

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

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

Чтобы ответить user716216, он объяснил это в объяснении своего предложения. Вторая строка кода - это то, что работает для случая по умолчанию. Первая строка кода работает, если вы создали и добавили кнопку самостоятельно. 14 янв. 142014-01-14 16:13:44

  0

Спасибо. это сработало!! 03 май. 172017-05-03 04:47:39


17

скрыть кнопку назад с сильфоном кодом ...

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

или

[self.navigationItem setHidesBackButton:YES]; 

Кроме того, если у вас есть пользовательские UINavigationBar попробуйте сильфон код

self.navigationItem.leftBarButtonItem = nil; 
  0

Это способ сделать это «динамически» или «по требованию». 29 янв. 142014-01-29 12:42:54

  0

в любом классе, когда вы использовали этот код, тогда на панели навигации навигатора этого класса скрывается ... 29 янв. 142014-01-29 12:47:57


3

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

self.navigationItem.hidesBackButton = YES; 

5

В Swift:

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

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

2

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


1

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

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

2

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

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

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

1

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

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

1

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

self.navigationItem.hidesBackButton = YES;

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