Предполагая, что у нас есть три экрана, которые нажимаются один за другим A-> B-> C И экран A изначально находится в tabBar. панель навигации должна быть скрыта в экране C и виден во всем rest.To сделать это делает следующееИспользование setNavigationBarHidden в viewWillAppear не работает
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden: YES animated:NO];
}
viewWillAppear вызывается, во всех случаях, но скрывая или показывая Панель навигации не обязательно отражается на пользовательском интерфейсе. Например, если используется кнопка «Назад», панель навигации отображается как в формате A & B, но если вызывается tabBarButton, что заставляет приложение прыгать на экран A непосредственно даже с экрана C, на экране A отсутствует навигационная панель. Я проверил self.navigatioController и инициализирован и имеет значение.
Я также попытался установить свойство NavigationBarHidden в viewDidAppear, но не повезло.
Любая помощь по этому вопросу? что может вызвать такой странный сценарий?
Редактировать: Answer Я обнаружил проблему. Экран C - это сложный экран из множества контейнеров. В одном из контейнеров я менял состояние navigationBar и влиял на все остальное в приложении и вызывал странное поведение и не мог самостоятельно управлять состоянием. Извините за беспокойство.
Вы пытались скрыть это на 'viewDidDissapear' vc B? – Tj3n
Да, но я тоже не работал –
'[self.navigationController setNavigationBarHidden: YES];' отлично работает для меня, когда я просто просто помещаю его в 'viewDidLoad', вы можете снова проверить, код – Tj3n