UINavigationController без панелі навігації?


117

У мене є універсальний додаток, і у версії iPad я використовую UISplitViewControllerдля створення інтерфейсу, схожого на додаток Mail.

У мене виникли проблеми із підштовхуванням нових переглядів деталей, тому я вирішив скористатися таким UINavigationControllerчином, щоб я міг просто натискати та переглядати по мірі необхідності. Однак я не хочу використовувати перегляд навігації чи панель інструментів. Але що б я не робив, я не можу приховати панель навігації.

Я спробував зняти прапорець "Показує панель навігації" в IB, а також спробував налаштувати:

[self.navigationController setNavigationBarHidden:YES];

в viewDidLoad/ viewDidAppear/ viewWillAppear. Я також спробував це в кожному з поглядів, які будуть висунуті. Нічого не працює.

Щось тут мені не вистачає? Чи можливо мати UINavigationControllerпанель інструментів або панель навігації?


Який надклас класу selfє екземпляром?

Відповіді:


192

Ви повинні зробити наступне:

self.navigationController.navigationBar.isHidden = true //Swift 5

де self.navigationController є (очевидно) екземпляром UINavigationController. Здається, це працює для мене, але я лише коротко перевірив це, перш ніж публікувати це.


2
Отже, у вашому випадку self.navigationController.navigationBar.hidden = ТАК;
Ешвін

4
Це зробили! Хоча я додам, що мені вдалося просто встановити прапорець Прихований на панелі інструментів Nagivation в IB, а не робити це за допомогою коду. Дякую!
DOOManiac

1
Так, вибачте з цього приводу. Я мав би зрозуміти той факт, що ви використовували ІБ і згадав поле Прихований замість коду. Нещодавно я почав створювати всі мої інтерфейси цілком програмно без файлів .xib, тому перейшов прямо до цього за своєю відповіддю.
Ешвін

5
Я називаю це таким чином, як на моєму контролі перегляду, як це, - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } і це працює
Алі

2
Навібар прихований, але екран мого диспетчера перегляду не розгортається на весь екран
ArdenDev

40

Якщо ви не хочете використовувати панель навігації, і ви хочете, щоб вміст було скориговано до місця, де зазвичай знаходиться панель навігації, вам слід скористатися

self.navigationController.navigationBarHidden = YES;

Це дає такий результат:

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

Тоді як self.navigationController.navigationBar.hidden = YES;ви надаєте простір, де повинен знаходитися навігаційний бар. Подобається це:

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


Дуже приємно відзначити різницю в результатах з iOS 6. Що стосується IOS 7, то, схоже, простір видалено, але я зачекаю, поки більше людей переконаються, що це так.
Олексій Заватоне

39

У Xcode 4.3.2:

  1. Виберіть контролер навігації на аркуші розкадрування
  2. Виберіть інспектор атрибутів на панелі (Право) утиліти
  3. Під категорією навігаційного контролера у вас є два прапорці:

    [] Показує панель навігації

    [] Показує Панель інструментів

Працювали для мене ...


8

Швидкий 4

Я приховую це в viewWillAppear

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

Потім ви можете повернути його, коли натискаєте на неї segue (якщо ви хочете мати кнопку назад на наступному огляді)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }

3

Swift 3 програмно

self.navigationController.isNavigationBarHidden = true

або

self.navigationController.navigationBar.isHidden = true

Примітка. Я не бачив різниці між цими двома підходами тестування на iOS 10.


1

Усі ці відповіді все ще залишають пробіл у верхній частині рядка стану - додайте цей рядок, щоб видалити його також:

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