2012-10-31 17 views
12

Ho trovato molti post, ma ancora nessuna soluzione. Sto cercando di nascondere una barra di navigazione sullo UIViewController iniziale, ma voglio ancora mostrarlo sul secondo UIViewController. Qui è il mio storyboard:Hide NavigationBar per una ViewController in Storyboard

enter image description here

Quando spengo il derivato Top Bar per il mio principale View Controller, che scompare in Storyboard, ma mostra ancora quando si esegue l'applicazione. Quando faccio lo stesso in NavigationBar in NavController, scompare per tutti e tre (perché tutti ereditano la no Nav Bar).

Voglio mostrare il NavBar in ScrollViewV View Controller, ma averlo nascosto in MainViewController.

Tutti i controller hanno i file .h o .m corrispondenti, ma sono confuso su come farlo a livello di programmazione. Fammi sapere se hai bisogno di vedere altro. Grazie mille!

risposta

41

Nella tua mainViewController, si può fare seguente:

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

Si potrebbe desiderare di visualizzare la barra di navigazione quando si nasconde questo ViewController, per questo effettuare le seguenti operazioni:

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

Grazie per la risposta alternativa! – Siriss

+0

Questa è stata la risposta migliore per ignorare viewWillAppear. Grazie e scusa per non aver indagato ulteriormente prima di rispondere. – Siriss

+0

Sono contento che abbia risolto il problema – user427969

0
self.navigationController.navigationBarHidden = YES; 
+0

Grazie! Quindi questo significa che poiché gli altri sono ereditati, dovrò renderlo visibile agli altri ViewController che ho corretto? E 'stato davvero facile .... Grazie ancora. – Siriss

+0

Inoltre, quando torno alla NavBar nel mio Controller Vista ScrollView, mostra nuovamente la barra di navigazione in Controller Vista Principale ... Come faccio a renderlo permanente? – Siriss

+1

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

0

Ho notato che è necessario aggiungere al controller anche quanto segue per visualizzare la navigazione.

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

Se si desidera mantenere le cose nella Storyboard di modificare gli attributi definiti dall'utente e impostato navigationController.navigationBarHidden come controllare un valore booleano.

+0

Questo è un ottimo suggerimento – Siriss

+2

Questo funziona, ma non potrai mostrare la barra di navigazione usando lo stesso trucco in un altro ViewController. (Gli attributi di runtime definiti dall'utente vengono applicati al momento del caricamento del pennino, non a viewWillAppear) – Berik

0

Chi vuole sapere come farlo in Swift?

override func viewDidAppear(animated: Bool) { 
    self.navigationController?.navigationBar.hidden = true 
} 
Problemi correlati