2012-08-07 16 views
7

Mam aplikację na iOS dla storyboardów, która ma wiele widoków, przez które przechodzę. Mam UINavigationController z wybraną opcją "Shows Toolbar", która następnie zapełnia się w mojej hierarchii widoków.Jak ukryć pasek narzędzi kontrolera UINavigation przy użyciu storyboardów?

Say my przepływ widok jest 3 widoki, A, B i C:

View A --(push)--> View B --(push)--> View C 

Widok A jest normalny kontroler widoku, za pomocą przycisku na pasku narzędzi używanych do pchania Zobacz B. View B kontroler tabel, więc chcę ukryć pasek narzędzi tutaj. Widok C to kolejny widok, taki jak Widok A, z widocznym paskiem narzędzi.

W Xcode/Storyboard, jeśli w widoku BI wybierz "Ukryj dolny pasek przy naciśnięciu", robi to dokładnie - dolny pasek jest ukryty dla widoku B. Podobnie, jeśli wybiorę "Brak" dla "dolnego paska", wybierz opcja, nie ma paska dla Widok B. Dobry.

Oto mój problem: Bez względu na to, co robię, korzystając z dowolnej opcji widoku B, mój pasek narzędzi nie wraca dla widoku C. Jeśli ustawię pasek narzędzi Widok C jako przewidywany (i odznacz Ukryj przy naciśnięciu), to nie robi tego ". t show, lub jeśli ustawię go ręcznie na "Toolbar".

Wszelkie pomysły?

Odpowiedz

15

Jak powiedział @ Zoltán, Storyboard nie zapewnia kompletnej odpowiedzi.

Ustawienie self.navigationController.toolbarUkryto = TAK/NIE na viewDidLoad lub viewWillAppear jest funkcjonalny, ale brzydki (czarny prostokąt pojawia się zamiast paska narzędzi podczas animacji przejścia widoku).

Oto co zrobiłem dla kontrolera View B (i odwrotność do wglądu c) naśladować gładkość animacji z opcji „ukryć na push” w serii ujęć:

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

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setToolbarHidden:NO animated:YES]; 
} 
+0

Czy dodałeś [super viewWillAppear: animated] i [super viewWillDisappear: animated]? –

+1

Nie zapomnij zadzwonić do widoku superWillAppear i viewWillDisappear! – liefersfl

+1

Idealny! W Swift: self.navigationController? .setToolbarUkryty (true, animated: true) – abanet

2

Nie sądzę, że można to zrobić wyłącznie w The Storyboard. Możesz jednak ustawić go tak, aby wyświetlał się zawsze, umieszczaj przyciski na nim w każdym widoku, w którym ma się pojawić i możesz zadzwonić pod numer self.navigationController.toolbarHidden = YES; po załadowaniu kontrolera view, w którym nie chcesz, aby pasek narzędzi pojawiał się. Po tym, jeśli pojawi się inny znak VC, na którym chcesz mieć pasek narzędzi, po prostu ustaw pasek narzędziUkryj na NIE.

+0

To działa, po prostu. Daje to przejście brzydkiemu czarnemu znakowi, w którym zniknął pasek narzędzi. Ale pod względem wymaganego kodu i niezdolności Storyboardów do dostarczenia całej rzeczy. – Freney

Powiązane problemy