Как скрыть / отключить только первую uinavigationbar?

Я бродил, как скрыть / удалить / отключить только основную или первую панель навигации в контроллере навигации, чтобы я мог поместить изображение как весь фоновый экран, но я не мог найти никакого решения.

Попытался скрыть заголовок в viewdidLoad главного контроллера навигации, но не сработал. Пытался использовать navigationBarHidden, но он скрывает всю панель навигации для следующего стека контроллера.

Итак, я не знаю, как это сделать. В качестве примера я хотел бы иметь что-то вроде этого приложения - The Masters Golf Tournament - http://appshopper.com/sports/the-masters-golf-tournament.

Если вы посмотрите на Экран 1, на нем нет панели навигации вверху, но когда вы коснетесь каких-либо параметров, он перейдет к новому контроллеру представления и отобразит панель навигации, как на экранах 3, 4 и 5.

Надеюсь, кто-нибудь сможет мне с этим помочь. Большое спасибо!




Ответы (4)


В большинстве моих приложений у меня есть собственный класс 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];
  }
}
person drawnonward    schedule 31.07.2010

Вы можете скрыть панель навигации: [self.navigationController setNavigationBarHidden:YES]; и где вы хотите снова показать панель навигации [self.navigationController setNavigationBarHidden:NO];

person yasha02    schedule 30.07.2012

скрыть / отключить

self.navigationController.navigationBarHidden = YES;

показать / включить

self.navigationController.navigationBarHidden = NO;
person Ar No    schedule 19.06.2014

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

Цель C

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

Swift

self.navigationController?.setNavigationBarHidden(true, animated: animated)
person user3189586    schedule 30.03.2017