Раскадровка - программно скрывает верхнюю панель контроллера навигации - PullRequest
30 голосов
/ 21 ноября 2011

Я использую раскадровку и пытаюсь скрыть верхнюю панель моего основного контроллера навигации, когда нажимается определенная кнопка (или вызывается функция).Я знаю, что должен инициализировать объект, ссылающийся на контроллер навигации, из раскадровки (используя идентификаторы), но когда я отправляю сообщение setNavigationBarHidden этому вновь созданному объекту, на экране ничего не происходит.

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"];

[navController setNavigationBarHidden:YES animated:YES];

Кто-нибудьзнаете в чем проблема?

Ответы [ 8 ]

69 голосов
/ 11 декабря 2011

Наконец-то решил.Вы всегда должны скрывать панель навигации только через viewController.

В моем вопросе выше я создал совершенно новый навигационный контроллер, который не указывал на настоящий navController на экране.Вы можете получить «реальный» через контроллер вида следующим образом:

[viewController.navigationController setNavigationBarHidden:YES animated:YES];
20 голосов
/ 08 января 2016

Есть 2 способа скрыть верхнюю панель контроллера навигации:

1) Программно

[self.navigationController setNavigationBarHidden:YES animated:YES];

2) Использование Interface Builder

Вы можете снять флажок «Показывает панель навигации» в списке свойств контроллера навигации.

enter image description here

Пожалуйста, убедитесь, что вы выбрали сцену, которая содержит контроллер навигации. Пример изображения сцены.
enter image description here

9 голосов
/ 07 июня 2016

в быстром 4:

self.navigationController!.navigationBar.isHidden = true

как то так:

override func viewDidLoad() {
        super.viewDidLoad()
       self.navigationController!.navigationBar.isHidden = true
    }
5 голосов
/ 17 мая 2013

Я столкнулся с той же проблемой, у меня это сработало

navController.navigationBar.hidden = YES;

2 голосов
/ 11 июня 2017

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

override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.navigationBar.isHidden = true
    }

и прежде чем покинуть вид:

override func viewWillDisappear(_ animated: Bool) {
      super.viewWillDisappear(animated)
      self.navigationController?.navigationBar.isHidden = false
}

`

1 голос
/ 07 февраля 2017

В Xamarin.iOS

base.NavigationController.NavigationBarHidden = true;
0 голосов
/ 02 августа 2016

SetRoot RootViewController после изменения свойств.

  UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

// Create Navigation controller with RootViewController
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[storyBoard instantiateViewControllerWithIdentifier:@"MyRootViewController"]];

Настройка RootViewController

 [appDelegate.window setRootViewController: navController];

или вы можете сделать это в любом ViewController

[self.navigationController setNavigationBarHidden:YES animated:YES];
0 голосов
/ 21 ноября 2015

Я скрываю панель навигации, сняв флажок Видимость панели «Показывает панель навигации» в Инспекторе атрибутов. Надеюсь, это кому-нибудь поможет.

enter image description here

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