2012-08-07 2 views
7

Ho una app per lo storyboard iOS con un numero di visualizzazioni che riesco a trasmettere. Ho un UINavigationController con l'opzione "Mostra barra degli strumenti" selezionata, che poi popola tutta la mia gerarchia di visualizzazione.Come posso nascondere la barra degli strumenti di un UINavigationController usando gli storyboard?

Dire il mio flusso di vista è 3 viste, A, B, e C:

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

Vista A è un normale controller di vista, con un pulsante sulla barra degli strumenti utilizzati per spingere Visualizza B. View B è un controller da tavolo, quindi voglio nascondere la barra degli strumenti qui. La vista C è un'altra vista come la vista A, con una barra degli strumenti necessaria per la visualizzazione.

In Xcode/Storyboard, se in Visualizza BI selezionare "Nascondi barra in basso su push" fa esattamente questo - la barra in basso è nascosta per Vista B. Analogamente se scelgo "Nessuno" per la "Barra in basso" selezionare opzione, non c'è barra per Visualizza B. Buono.

Ecco il mio problema: Non importa quello che faccio, utilizzando entrambe le opzioni per la visualizzazione B, toolbar non torna per la vista C. Se ho impostato barra degli strumenti Vedi di C come dedotto (e nascondere deselezionare il push) doesn' t show, né se l'ho impostato manualmente su 'Toolbar'.

Qualche idea?

risposta

15

Come ha detto @ Zoltán, Storyboard non fornisce la risposta completa.

Impostazione self.navigationController.toolbarHidden = SÌ/NO su viewDidLoad o viewWillAppear è funzionale, ma brutta (un rettangolo nero viene visualizzato al posto della barra degli strumenti durante l'animazione di transizione della vista).

Ecco quello che ho fatto per il controller View B (e l'inverso per View C) per imitare la morbidezza dell'animazione dell'opzione "nascondere il push" nello storyboard:

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

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

Hai incluso [super viewWillAppear: animato] e [super viewWillDisappear: animated]? –

+1

Non dimenticare di chiamare la vista di superWillAppear e viewWillDisappear! – liefersfl

+1

Perfetto! In Swift: self.navigationController? .setToolbarHidden (true, animato: true) – abanet

2

Non penso che tu possa farlo solo nello storyboard. Tuttavia puoi semplicemente impostarlo per visualizzarlo sempre, posizionare i pulsanti su di esso per ogni visualizzazione in cui desideri che venga visualizzato e puoi chiamare self.navigationController.toolbarHidden = YES; quando viene caricato un viewcontroller in cui non si desidera visualizzare la barra degli strumenti. Successivamente, se viene visualizzato un altro VC su cui si desidera la barra degli strumenti, impostare solo barra degli strumenti su No.

+0

Questo funziona, basta. Dà alla transizione un brutto segno nero in cui la barra degli strumenti è scomparsa. Ma è giusto in termini di codice necessario, e l'impossibilità per Storyboard di fornire l'intera cosa. – Freney