Hide NavigationBar для одного ViewController в раскадровке
Я нашел много сообщений, но до сих пор нет решения. Я пытаюсь скрыть NavigationBar на начальном UIViewController
, но я хочу показать его еще во второй UIViewController
. Вот моя раскадровка:
![enter image description here]()
Когда я выключаю верхнюю панель Inferred для моего главного контроллера просмотра, она исчезает в Storyboard, но она по-прежнему отображается, когда я запускаю приложение. Когда я делаю то же самое в NavigationBar в NavController, он исчезает для всех трех (потому что они все наследуют строку Nav bar).
Я хочу показать NavBar в ScrollViewV View Controller, но спрятать его в MainViewController
.
Все контроллеры имеют соответствующие файлы .h или .m, но я смущен тем, как это сделать программно. Дайте мне знать, если вам нужно увидеть что-нибудь еще. Большое вам спасибо!
Ответы
Ответ 1
В вашем mainViewController вы можете сделать следующее:
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
}
Возможно, вы захотите отобразить панель навигации, скрывая этот ViewController, для этого выполните следующие действия:
- (void)viewDidDisappear: (BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewDidDisappear:animated];
}
Ответ 2
Если вы хотите держать вещи в раскадровке, чем редактировать атрибуты, определенные пользователем, и
установите navigationController.navigationBarHidden
как проверенный булером.
Ответ 3
self.navigationController.navigationBarHidden = YES;
Ответ 4
Я заметил, что вам также нужно добавить следующее к контроллеру, чтобы вы отображали навигацию.
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillAppear:animated];
Ответ 5
Кто-нибудь хочет знать, как это сделать в Swift?
override func viewDidAppear(animated: Bool) {
self.navigationController?.navigationBar.hidden = true
}