Как скрыть / отключить только первую панель навигации? - PullRequest
11 голосов
/ 31 июля 2010

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

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

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

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

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

Ответы [ 4 ]

18 голосов
/ 31 июля 2010

В большинстве моих приложений у меня есть собственный класс 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];
  }
}
12 голосов
/ 30 июля 2012

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

5 голосов
/ 19 июня 2014

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

self.navigationController.navigationBarHidden = YES;

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

self.navigationController.navigationBarHidden = NO;
0 голосов
/ 30 марта 2017

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

Объектив C

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

Swift

self.navigationController?.setNavigationBarHidden(true, animated: animated)
...