UINavigationController без панели навигации? - PullRequest
113 голосов
/ 23 апреля 2011

У меня есть универсальное приложение, и в версии для iPad я использую UISplitViewController для создания интерфейса, аналогичного приложению Mail.

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

Я попытался снять флажок «Показывает панель навигации» в IB, и я также попытался установить:

[self.navigationController setNavigationBarHidden:YES];

в viewDidLoad / viewDidAppear / viewWillAppear. Я также попробовал это в каждом из представлений, которые будут выдвинуты. Ничего не работает.

Есть что-то, чего я здесь не хватает? Возможно ли иметь UINavigationController без панели инструментов или панели навигации?

Ответы [ 5 ]

184 голосов
/ 23 апреля 2011

Вы должны быть в состоянии сделать следующее:

self.navigationController.navigationBar.hidden = YES;

где self.navigationController (очевидно) является экземпляром UINavigationController. Кажется, работает для меня, но я только кратко проверил это перед публикацией этого.

39 голосов
/ 26 июня 2013

Если вам не нужна навигационная панель, и вы хотите, чтобы содержимое было настроено так, как обычно располагается навигационная панель, вы должны использовать

self.navigationController.navigationBarHidden = YES;

Это даст вам такой результат:

enter image description here

Принимая во внимание, что self.navigationController.navigationBar.hidden = YES; дает вам место, где должна быть навигационная панель.Как это:

enter image description here

39 голосов
/ 16 мая 2012

В Xcode 4.3.2:

  1. Выберите контроллер навигации в раскадровке
  2. Выберите Инспектор атрибутов на панели инструментов (справа)
  3. В категории «Контроллер навигации» у вас есть два флажка:

    [] Показывает панель навигации

    [] Показывает панель инструментов

работал для меня ...

7 голосов
/ 29 октября 2017

Swift 4

Я скрываю это в viewWillAppear

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

        self.navigationController?.isNavigationBarHidden = true;
    }

Затем вы можете положить его обратно, когда вы нажимаете на переход (если вы хотите получить обратнокнопка на следующем экране)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }
3 голосов
/ 23 июня 2017

Swift 3 Программно

self.navigationController.isNavigationBarHidden = true

или

self.navigationController.navigationBar.isHidden = true

Примечание: я не видел разницы между этими двумя подходами, тестирующими на iOS 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...