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

Раскадровка - программно скрывает верхнюю панель навигационного контроллера

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

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

[navController setNavigationBarHidden:YES animated:YES];

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

4b9b3361

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