iPhone скрывает панель навигации только на первой странице - PullRequest
365 голосов
/ 10 мая 2009

У меня есть код ниже, который скрывает и показывает навигационную панель. Он скрывается, когда загружается первое представление, а затем скрывается, когда вызывается «потомок» Проблема в том, что я не могу найти событие / действие, которое заставит его скрыться снова, когда они вернутся к корневому представлению ....

У меня есть кнопка «test» на корневой странице, которая выполняет действие вручную, но это не красиво, и я хочу, чтобы оно было автоматическим.

-(void)hideBar 
{
    self.navController.navigationBarHidden = YES;
}
-(void)showBar 
{       
    self.navController.navigationBarHidden = NO;
}

Ответы [ 14 ]

0 голосов
/ 20 февраля 2018

Swift 4:

В контроллере вида, из которого вы хотите скрыть панель навигации.

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
    super.viewWillAppear(animated)
}

override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
    super.viewWillDisappear(animated)
}
0 голосов
/ 23 февраля 2017

Скрытие панели навигации только на первой странице может быть достигнуто также через раскадровку. На раскадровке перейдите к Сцена контроллера навигации-> Панель навигации . И выберите свойство Hidden в инспекторе Attributes . Это скроет панель навигации, начиная с первого viewcontroller, пока она не станет видимой для требуемого viewcontroller.

Панель навигации может быть возвращена в видимое состояние в обратном вызове ViewWillAppear ViewController.

-(void)viewWillAppear:(BOOL)animated {

    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillAppear:animated];                                                  
}
0 голосов
/ 02 августа 2016

Используя этот код в вашем ViewController, вы можете получить этот эффект На самом деле хитрость заключается в том, чтобы скрыть панель навигации при запуске этого контроллера

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

и показывать панель навигации, когда пользователь покидает эту страницу, это viewWillDisappear

- (void)viewWillDisappear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    [super viewWillDisappear:animated];
}
0 голосов
/ 01 декабря 2011

Самая простая реализация может состоять в том, чтобы каждый контроллер вида указывал, скрыта ли его панель навигации в его методе viewWillAppear:animated:. Тот же подход хорошо работает и для скрытия / отображения панели инструментов:

- (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setToolbarHidden:YES/NO animated:animated];
    [super viewWillAppear:animated];
}
...