setNavigationBarHidden: ДА не работает с searchDisplayController - PullRequest
8 голосов
/ 21 января 2012

Я использую следующий код, чтобы скрыть панель навигации в detailViewController (мой второй вид), и он прекрасно работает, когда я касаюсь любого объекта из MasterViewController (мой первый вид).

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

Однако, когда я фильтрую список таблиц в masterViewController с помощью searchDisplayController и нажимаю любой объект из результата, панель навигации в detailView не скрывается ...

Нужно ли делать какие-либо дополнительныеработать, чтобы скрыть панель навигации, если я использую searchDisplayController?

для отладки, я устанавливаю точку останова на строке setNavigationBarHidden: YES, и даже если я перехожу к detailViewController через результат поиска, приложение попадает в строку..

Ответы [ 5 ]

13 голосов
/ 04 марта 2014

вы должны положить [self.navigationController setNavigationBarHidden: YES];в функции viewWillLayoutSubviews. Вот так:

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

работает.

1 голос
/ 16 августа 2016

Вы должны попробовать этот метод:
В том контроллере, где вы объявили UISearchController *searchController, вы должны реализовать два метода (только для примера):

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    // if you want to hide Navigation Bar when searchController will become active
    _searchController.hidesNavigationBarDuringPresentation = YES;
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    _searchController.hidesNavigationBarDuringPresentation = NO;
}

Код выше может иметь различияГлавное в свойстве hidesNavigationBarDuringPresentation (iOS 8.0 и выше).Попробуйте поиграть с ним и поверните на hidesNavigationBarDuringPresentation = NO, прежде чем нажимать новый контроллер.После этих манипуляций я взял прибыль: когда нажал UIViewController, установщик setNavigationBarHidden:YES стал работать

0 голосов
/ 17 апреля 2015

Это

- (void) viewWillLayoutSubviews

вызывает проблемы с макетом, поэтому я использовал код ниже.У меня отлично работает.

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO];
}
0 голосов
/ 16 июня 2013

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

вот ответ:

https://stackoverflow.com/a/6337037/1348121

0 голосов
/ 21 января 2012

если вы хотите скрыть панель навигации, то в xib вашего MainWindow снимите флажок «Показывает панель навигации» атрибутов контроллера навигации.

Это позволит скрыть панель навигации в вашем проекте в целом.Если вы хотите показать панель навигации в любом контроллере, установите NavigationBar Hidden = NO в методе ViewDidLoad этого контроллера.

...