Подтвердить что ты не робот

Hide NavigationBar для одного ViewController в раскадровке

Я нашел много сообщений, но до сих пор нет решения. Я пытаюсь скрыть NavigationBar на начальном UIViewController, но я хочу показать его еще во второй UIViewController. Вот моя раскадровка:

enter image description here

Когда я выключаю верхнюю панель Inferred для моего главного контроллера просмотра, она исчезает в Storyboard, но она по-прежнему отображается, когда я запускаю приложение. Когда я делаю то же самое в NavigationBar в NavController, он исчезает для всех трех (потому что они все наследуют строку Nav bar).

Я хочу показать NavBar в ScrollViewV View Controller, но спрятать его в MainViewController.

Все контроллеры имеют соответствующие файлы .h или .m, но я смущен тем, как это сделать программно. Дайте мне знать, если вам нужно увидеть что-нибудь еще. Большое вам спасибо!

4b9b3361

Ответ 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
}