3

Когда вы входите в панель поиска, обрабатываемую контроллером отображения поиска, она сдвигает представление вверх и подталкивает навигационную панель вверх. Это достаточно легко сделать, однако, когда вы нажимаете на результат поиска, и новое представление нажимается на стек контроллера навигатора, панель навигации скользит справа с представлением!Как контроллер отображения поиска скрывает панель навигации?

Как это делается? Если вы просто установите навигационную панель в скрытую или показанную, это произойдет мгновенно. Я не могу понять, как он скрывается только для одного контроллера представления в стеке!

Большое спасибо,

Майкл

ответ

8

Вы можете анимировать переход на панели навигации. См. -setNavigationBarHidden:animated: для получения более подробной информации.

Если вам нужно сделать это в расчете на просмотр контроллер основе, просто переопределить контроллер представления -viewDidAppear: и -viewWillDisappear: методы, например:

- (void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.navigationController setNavigationBarHidden:YES animated:YES]; 
} 

- (void) viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    [self.navigationController setNavigationBarHidden:NO animated:YES]; 
} 

выше скроет панель навигации, когда этот контроллер вида выталкиваются в верхней части навигационного стека, и отобразите панель навигации, когда контроллер вида выскочил.

Вы можете позвонить -setNavigationBarHidden:animated: всякий раз, когда захотите, но эти два метода полезны для применения большого количества изменений пользовательского интерфейса.

+0

Да, но это скроет панель навигации с этого момента, и когда вы нажмете другой контроллер вида, он все равно будет скрыт. И даже если вы покажете навигационную панель при нажатии нового контроллера, вы увидите, что на предыдущем контроллере появилась навигация. Это связано с тем, что панель навигации является одной и той же полосой для всех контроллеров в стеке навигационного контроллера. Следовательно, смущение относительно того, как контроллер отображения поиска делает то, что он делает! –

+0

См. Отредактированный ответ. Вы можете анимировать панель навигации, когда контроллер воспроизведения вытолкнут/вытолкнут. –

+0

Ahhh никак! Genius! Я понятия не имел, что код show/hide в viewWillAppear/Disappear будет иметь какое-либо значение в отношении того, как отображалась панель навигации! Спасибо, очень много, я был в тупике в течение нескольких часов на этом! –

0
-(void)viewDidLayoutSubviews{ 
    [self.navigationController setNavigationBarHidden:NO animated:NO]; 
} 

не будет скрывать навигационную панель.

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

  • Нет связанных вопросов^_^