2012-10-31 8 views
12

Znalazłem wiele postów, ale wciąż nie ma rozwiązania. Próbuję ukryć pasek nawigacji na początkowym UIViewController, ale chcę nadal wyświetlać go na drugim UIViewController. Oto moja storyboard:Ukryj nawigacjęBar dla jednego ViewController w Storyboard

enter image description here

Kiedy wyłączyć wywnioskować Top Bar dla mojego widoku głównym kontrolerem, znika w serii ujęć, ale nadal pokazuje, kiedy należy uruchomić aplikację. Kiedy zrobię to samo na pasku nawigacyjnym w kontrolerze NavController, znika dla wszystkich trzech (ponieważ wszystkie one dziedziczą pasek bez paska nawigacyjnego).

Chcę pokazać NavBar w kontrolerze widoku ScrollViewV, ale chcę go ukryć w MainViewController.

Wszystkie kontrolery mają odpowiednie pliki .h lub .m, ale nie mam pojęcia, jak to zrobić programowo. Daj mi znać, jeśli chcesz zobaczyć cokolwiek innego. Dziękuję bardzo!

Odpowiedz

41

W swojej mainViewController, można wykonać następujące czynności:

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

Może chcesz wyświetlić pasek nawigacji podczas ukrywania tego ViewController, na które należy wykonać następujące czynności:

- (void)viewDidDisappear: (BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
    [super viewDidDisappear:animated]; 
} 
+0

Dzięki za alternatywną odpowiedź! – Siriss

+0

To była lepsza odpowiedź na zastąpienie viewWillAppear. Dziękuję i przepraszam, że nie podjąłem dalszych kroków, zanim odpowiem. – Siriss

+0

Cieszę się, że rozwiązałeś swój problem. – user427969

0
self.navigationController.navigationBarHidden = YES; 
+0

Dzięki! Oznacza to, że skoro pozostałe są dziedziczone, będę musiał ustawić je na widoczne w innych kontrolerach ViewControllers, które mam. To było naprawdę łatwe ... Jeszcze raz dziękuję. – Siriss

+0

Po ponownym naciśnięciu na NavBar w moim kontrolerem widoku ScrollView, pokaże pasek nawigacji ponownie w Main View Controller ... Jak mogę to zrobić na stałe? – Siriss

+1

viewDid/WillAppear and viewDid/WillDissappear ... – Martol1ni

0

Zauważyłem, że musisz również dodać do kontrolera, że ​​chcesz, aby nawigacja się pojawiła.

[self.navigationController setNavigationBarHidden:NO animated:animated]; 
[super viewWillAppear:animated]; 
2

Jeśli chcesz zachować rzeczy w serii ujęć, niż edytować atrybuty użytkownika zdefiniowane i ustawić navigationController.navigationBarHidden jako sprawdzone logiczna.

+0

To jest świetna sugestia. – Siriss

+2

To działa, ale nie można wyświetlić paska nawigacyjnego za pomocą tej samej sztuczki w innym ViewController. (Atrybuty Runtime zdefiniowane przez użytkownika są stosowane w czasie ładowania Nib, a nie w viewWillAppear) – Berik

0

Ktoś, kto chce wiedzieć, jak to zrobić w Swift?

override func viewDidAppear(animated: Bool) { 
    self.navigationController?.navigationBar.hidden = true 
} 
Powiązane problemy