Как скрыть/отключить только первый 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)