UINavigationController без навигационной панели?
У меня есть универсальное приложение, а в версии iPad я использую UISplitViewController
для создания интерфейса, подобного приложению Mail.
У меня возникли проблемы с нажатием новых подробных представлений, поэтому я решил использовать UINavigationController
, чтобы я мог просто нажимать и всплывать по мере необходимости. Однако я не хочу использовать навигационное представление или панель инструментов. Но независимо от того, что я делаю, я не могу скрыть панель навигации.
Я попытался снять флажок "Показывает панель навигации" в IB, и я также попробовал установку:
[self.navigationController setNavigationBarHidden:YES];
в viewDidLoad
/viewDidAppear
/viewWillAppear
. Я также пробовал это в каждом из видов, которые будут нажаты. Ничего не работает.
Есть ли что-то, что мне здесь не хватает? Возможно ли иметь UINavigationController
без панели инструментов или панели навигации?
Ответы
Ответ 1
Вы должны быть в состоянии сделать следующее:
self.navigationController.navigationBar.hidden = YES;
где self.navigationController(очевидно) является экземпляром UINavigationController. Кажется, работает для меня, но я только кратко протестировал его, прежде чем публиковать это.
Ответ 2
В Xcode 4.3.2:
- Выберите контроллер навигации в раскадровке
- Выберите инспектор атрибутов на панели (справа).
-
В категории "Контроллер навигации" есть два флажка:
[] Показывает панель навигации
[] Показывает панель инструментов
Работал для меня...
Ответ 3
Если вы не хотите панели навигации и хотите, чтобы контент был скорректирован до места, где обычно была панель навигации, вы должны использовать
self.navigationController.navigationBarHidden = YES;
Это даст вам следующий результат:
![enter image description here]()
В то время как self.navigationController.navigationBar.hidden = YES;
дает вам пробел, в котором должен находиться navigationBar. Вот так:
![enter image description here]()
Ответ 4
Swift 3 Программно
self.navigationController.isNavigationBarHidden = true
или
self.navigationController.navigationBar.isHidden = true
Примечание. Я не видел разницы между этими двумя подходами к тестированию на iOS 10.
Ответ 5
Swift 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;
}