Как скрыть/отключить только первый uinavigationbar?
Я блуждал, как скрыть/удалить/отключить только основную или первую панель навигации в навигационном контроллере, чтобы я мог поместить изображение в целом фоновый экран, но я не мог найти никакого решения.
Попробовал скрыть заголовок в viewdidLoad главного навигационного контроллера, но не работал. Пробовал использовать navigationBarHidden, но он скрывает всю панель навигации для следующего стека контроллера.
Итак, я не уверен, как это сделать. Чтобы дать вам пример, я хотел бы иметь что-то вроде этого приложения - The Masters Golf Tournament - http://appshopper.com/sports/the-masters-golf-tournament.
Если вы посмотрите на Экран 1, у него нет верхней панели навигации наверху, но когда вы прикасаетесь к каким-либо параметрам, он будет перемещаться к новому контроллеру представления и отображать навигационную панель, как на экране 3,4 и 5.
Надеюсь, что кто-нибудь может мне помочь с этим. Спасибо большое!
Ответы
Ответ 1
В большинстве моих приложений у меня есть пользовательский класс UIViewController, из которого я получаю все остальные пользовательские контроллеры. В некоторых из них я добавил метод, подобный navigationBarInitiallyHidden
, в базовый класс, который могут переопределить другие классы. Результат по умолчанию зависит от характера приложения.
В делегате контроллера навигации, когда отображается контроллер, который реализует этот метод, делегат скрывает или отображает навигационный контроллер соответственно. Поскольку я анимация скрыть или показать, я проверяю текущее состояние и ничего не делаю, если никаких изменений не требуется.
Вы можете сделать что-то более простое в методе делегата. Если отображаемый контроллер является корневым контроллером, скройте навигационную панель, иначе покажите ее, если она скрыта.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ( viewController == rootController ) {
[navigationController setNavigationBarHidden:YES animated:animated];
} else if ( [navigationController isNavigationBarHidden] ) {
[navigationController setNavigationBarHidden:NO animated:animated];
}
}
Ответ 2
Вы можете скрыть панель навигации:
[self.navigationController setNavigationBarHidden:YES];
и где вы хотите снова отобразить навигационную панель
[self.navigationController setNavigationBarHidden:NO];
Ответ 3
скрыть/отключить
self.navigationController.navigationBarHidden = YES;
показать/Включить
self.navigationController.navigationBarHidden = NO;
Ответ 4
Скрыть панель навигации можно с помощью следующего кода. Ниже кода будет скрываться панель навигации во время просмотраWillAppear.
Цель C
-(void)viewWillAppear:(BOOL)animated
{
[[self navigationController] setNavigationBarHidden:YES animated:NO];
}
Swift
self.navigationController?.setNavigationBarHidden(true, animated: animated)