Як приховати кнопку "Назад" на панелі навігації на iPhone?


315

Я додав елемент керування навігацією для переключення між переглядами в моєму додатку. Але в деяких переглядах не повинно бути кнопки "Назад" (попередня назва). Будь-які ідеї про те, як приховати кнопку назад?

Відповіді:


811

Завдання-C:
self.navigationItem.hidesBackButton = YES;

Швидкий:
navigationItem.hidesBackButton = true


@ user8170 як приховати ліву барбутонтоніму на панелі навігації ..?
рокей

9
Ви не можете приховати кнопочку назад self.navigationItem.leftBarButtonItem = nil;. Якщо ви чітко встановили ліву панель, ви можете скористатися self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES;приховає кнопку Назад Елемент
rakeshNS

1
В iOS 7, self.navigationItem.leftBarButtonItem = нуль; не впливає на кнопку повернення при видачі з viewDidLoad, viewWillAppear або viewDidAppear. Цей рядок коду працює в viewdidLoad: self.navigationItem.hidesBackButton = ТАК;
Олексій Заватоне

2
не впевнений, чи допомагає це, але "self" - це завжди контролер перегляду, який представлений у верхній частині стека навігаційного контролера.
Kunal Balani

self.navigationItem.hidesBackButton = ТАК; працює для мене в viewDidLoad, ios 7
leukosaima

38

Найкращий спосіб поєднувати їх, тому він приховає кнопку назад, навіть якщо ви встановите її вручну:

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

6
Щоб відповісти user716216, він пояснив це у своєму поясненні в одному реченні. Другий рядок коду - це те, що працює для випадку за замовчуванням. Перший рядок коду працює, якщо ви створили та додали кнопку самостійно.
Олексій Заватоне

21

приховати кнопку назад із наведеним нижче кодом ...

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

або

[self.navigationItem setHidesBackButton:YES];

Також якщо у вас є звичай, UINavigationBarто спробуйте нижче

self.navigationItem.leftBarButtonItem = nil;

у будь-якому класі, коли ви використовували цей код, тоді на панелі навігації цього клавіша кнопка повернення буде прихована ...
Paras Joshi

6

У Свіфті :

Додайте це до контролера

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


3

У функції viewDidLoad UIViewController використовуйте код:

self.navigationItem.hidesBackButton = YES;

2

Не забувайте, що вам потрібно викликати його на об'єкті, що має контролер navi. Наприклад, якщо у вас контролер наві, який натискає на контролер панелі вкладок з RootViewController, виклик self.navigationItem.hidesBackButton = YESRootViewController нічого не зробить. Вам би насправді довелося зателефонуватиself.tabBarController.navigationItem.hidesBackButton = YES


2

Не забувайте, що зараз у нас є слайд назад до жесту. Ви, ймовірно, хочете також видалити це. Не забудьте знову увімкнути його.

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

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

1

Додайте цей код у свій контролер перегляду

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

1

Мені, здається, ніщо з вищезгаданого не спрацювало, це не мало візуального ефекту. Я використовую рекламні дошки з видом, який "вбудований" у навігаційний контролер.

Тоді я на рівні коду додаю свої менюItems, і чомусь "backButton" видно при візуальній налагодженні ієрархії перегляду, а моє менюItem Icon відображається під невидимою "кнопкою" назад.

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

Я перевірив розміри значків і, здається, все в порядку. Звернувшись до Посібника з людського інтерфейсу 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 = ТАК;

в viewWillAppear або ViewDidLoad, але відмінно працював, коли я встановив його в init з viewController.




0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

якщо ви використовуєте цей блок коду всередині didLoad або loadView, працював, але не працював ідеально. Якщо ви уважно подивитеся, ви побачите, що кнопка "назад" приховується, коли ваш перегляд завантажується.

Яке ідеальне рішення?

Додайте компонент BarButtonItem з компонентView (Command + Shift + L) на цільовий панель навігації. Контролери.

Виберіть BarButtonItem set Title = "" на правій панелі

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.