Раскадровка - программно скрывает верхнюю панель навигационного контроллера
Я использую раскадровку, и я пытаюсь скрыть верхнюю панель моего основного навигационного контроллера, когда нажимается определенная кнопка (или вызывается функция). Я знаю, что мне нужно инициализировать объект, ссылающийся на контроллер навигации из раскадровки (используя идентификаторы), но когда я отправляю сообщение setNavigationBarHidden на этот вновь созданный объект, на экране ничего действительно не происходит.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"];
[navController setNavigationBarHidden:YES animated:YES];
Кто-нибудь знает, в чем проблема?
Ответы
Ответ 1
Наконец решил. Вы всегда должны скрывать навигационную панель только через viewController.
В моем вопросе выше я создал новый навигационный контроллер, который не указывал на реальный navController на экране. Вы можете получить "реальный" один через контроллер вида следующим образом:
[viewController.navigationController setNavigationBarHidden:YES animated:YES];
Ответ 2
Есть два способа скрыть верхнюю панель навигационного контроллера:
1) Программно
[self.navigationController setNavigationBarHidden:YES animated:YES];
2) Использование Interface Builder
Вы можете снять флажок "Показывать панель навигации" в списке свойств навигационного контроллера.
![введите описание изображения здесь]()
Пожалуйста, убедитесь, что вы выбрали сцену, которая содержит навигационный контроллер. Пример изображения сцены.
![введите описание изображения здесь]()
Ответ 3
Я столкнулся с такой же проблемой, это сработало для меня
navController.navigationBar.hidden = YES;
Ответ 4
в быстрой:
self.navigationController!.navigationBar.hidden = true
что-то вроде этого:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController!.navigationBar.hidden = true
}
Ответ 5
Ответы верны. Просто хочу добавить, что вы, вероятно, захотите вернуть панель навигации, оставив представление, поскольку другие представления могут использовать его, и когда вы прячете для своего скрытого для всех.
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.isHidden = true
}
и перед тем как покинуть представление:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.isHidden = false
}
`
Ответ 6
Я скрою свою панель навигации, сняв флажок "Видимость штрих-кода". Отображает панель навигации "В инспекторе атрибутов". Надеюсь, что это поможет кому-то.
![введите описание изображения здесь]()
Ответ 7
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];
Ответ 8
В Xamarin.iOS
base.NavigationController.NavigationBarHidden = true;