2012-01-21 12 views
8

Korzystam z następującego kodu, aby ukryć mój navigationBar w detailViewController (mój drugi widok), i działa idealnie dobrze, gdy dotknę dowolnego z mojego obiektu z MasterViewController (mój pierwszy widok).setNavigationBarUkryty: TAK nie działa z searchDisplayController

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

Jednak, kiedy filtrować listę tabeli w masterViewController korzystając searchDisplayController i wybierz dowolny obiekt z konsekwencji navigationBar w detailView nie dostać ukryty ...

Czy muszę zrobić dodatkową pracę, aby ukryć pasek nawigacyjny, jeśli używam searchDisplayController?

do debugowania, ustawić punkt przerwania na linii setNavigationBarHidden: Tak, i nawet jeśli idę do detailViewController poprzez wyniku wyszukiwania, aplikacja uderza linię ..

+3

jeśli ustawię [self.navigationController setNavigationBarHidden: YES animated: animated]; w viewDidAppear, działa dobrze ... ale chcę go ukryć przed wyświetleniem drugiego widoku :( – sora

Odpowiedz

13

ty shuold umieścić [self.navigationController setNavigationBarHidden: YES]; w viewWillLayoutSubviews function.like:

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

to działa.

0

jeśli chcesz ukryć Nawigacja bar, następnie W twoim MainWindow Xib odznacz "Atrybuty paska nawigacji" Kontrolera Nawigacji.

Spowoduje to ukrycie paska nawigacyjnego w całym projekcie. Jeśli chcesz pokazać pasek nawigacyjny w dowolnym zestawie kontrolerów NavigationBar Hidden = NO w metodzie ViewDidLoad tego kontrolera.

+0

Zaimplementowałem navigationBar programowo, więc setNavigationBarHidden jest jedyną opcją ... nie działa, gdy używam go od wynik wyszukiwania :( – sora

0

Ten

- (void) viewWillLayoutSubviews 

powoduje problemy układu, więc użyłem poniżej kodu. Działa dobrze dla mnie.

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

Należy spróbować tej metody:
w tym kontrolerze, gdzie deklarowanej UISearchController *searchController należy realizować na dwa sposoby (tylko przykładowo):

- (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; 
} 

Powyższy kod może mieć różnice. Główny punkt w właściwości hidesNavigationBarDuringPresentation (iOS 8.0 i nowsze). Spróbuj zagrać z nim i przejdź do hidesNavigationBarDuringPresentation = NO przed naciśnięciem nowego kontrolera. Po tych manipulacjach przyjąłem zysk: po naciśnięciu UIViewController, ustawiający setNavigationBarHidden:YES pracuje

Powiązane problemy