0

Предполагая, что у нас есть три экрана, которые нажимаются один за другим 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 и влиял на все остальное в приложении и вызывал странное поведение и не мог самостоятельно управлять состоянием. Извините за беспокойство.

+0

Вы пытались скрыть это на 'viewDidDissapear' vc B? – Tj3n

+0

Да, но я тоже не работал –

+0

'[self.navigationController setNavigationBarHidden: YES];' отлично работает для меня, когда я просто просто помещаю его в 'viewDidLoad', вы можете снова проверить, код – Tj3n

ответ

0

В обоих ViewController A и ViewController B, используйте:

-(void) viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:animated]; 

    [self.navigationController setNavigationBarHidden: NO animated:NO]; 
} 

В ViewController с, использовать это (как указано в вопросе):

-(void) viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:animated]; 

    [self.navigationController setNavigationBarHidden: YES animated:NO]; 
} 
+0

Это именно то, что делаю, но по какой-то причине оно не работает.не рассчитан на игроков команды. –

+0

Я проверю и вернусь к вам .. – KSR

+0

Может ли у вас отправить скриншот вашего просмотраКонтроллеры? – KSR

-1

Попробуйте следующее: -

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

вместо: -

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

Я обнаружил проблему. Экран C представляет собой сложный экран из множества контейнеров. В одном из контейнеров я менял состояние navigationBar, и это повлияло на все остальное в приложении и вызвало странный beahviour.

+0

Хорошо. Ваша проблема решена. – KSR

+0

В моем примере мой ответ работает нормально .. – KSR

Смежные вопросы