2012-01-02 3 views
18

La mia applicazione è un'applicazione a schede e ha diversi controller sotto tabBarController. Un controller è un controller di navigazione e la sua vista di root è una tabella. Quando faccio clic su una riga della vista tabella, verrà spinto un'altra vista. Quindi la domanda è che quando si spinge la vista, come posso nascondere il tabBar in fondo? Inoltre, voglio anche aggiungere un altro tabbar nella visualizzazione spinto, quindi ho bisogno di allocare un UITabBar o UITabBarController? O c'è un altro modo? Grazie!Come nascondere il tabbar quando si spinge una vista?

risposta

48

uso questo methood nella classe UIViewController in cui si desidera nascondere il tabBarController

-(BOOL)hidesBottomBarWhenPushed 
{ 
    return YES; 
} 

Aggiornamento

Come suggerito da @Yuchen Zhong nella sua risposta, questa opzione è ora disponibile nello storyboard si.

enter image description here

+1

Grazie! Ho usato questo metodo ma ancora non ha funzionato. Ho anche usato "myViewController.tabBarController.hidesBottomBarWhenPushe = YES", e non ha funzionato troppo. Sono confuso su questo. Devo cambiare la mia struttura o ci sono modi migliori? Grazie! – wjldxt

+1

Ho un'applicazione TabBar simile con NavigationController come primo controller, ma nel controller di navigazione ho quindi aggiunto solo una tabellaView e sposto l'altra vista in didSelectRow methood della vista tabella. hai preso tableVeiwController invece un semplice TableView .. ?? sarebbe utile se incolli parte del tuo codice qui – Bonnie

+0

Grazie! L'ho fatto alla fine È colpa mia se ho inserito il controller di navigazione in un viewController. Quando uso direttamente il controller di navigazione, è riuscito. Grazie mille! – wjldxt

8

Set UIViewController.hidesBottomBarWhenPushed = YES quando si vuole nascondere barra di scheda.

... 
nextViewController.hidesBottomBarWhenPushed = YES; 
... 
+0

Grazie @ tuoxie007 – Kakashi

+0

Grazie ha funzionato. – Chandni

5

A volte il metodo hidesBottomBhenWhenPushed nasconde la barra in basso con un'animazione choppy.

Invece mi nascondo barra delle linguette in viewDidLoad con

self.tabBarController.tabBar.hidden = YES; 

e ripristinare la sua presenza in viewWillDisappear

self.tabBarController.tabBar.hidden = NO; 
+0

non è bello, come si assume in questo VC che un altro VC in pila vuole la tabbar - anche 'viewDidLoad' è la posizione sbagliata, come potrebbe essere chiamato anche quando questo VC non è ancora visibile, anche' self.tabBarController' potrebbe essere 'nil' – fabb

12

È possibile farlo in storyboard ora:

  1. Selezionare la UIViewController nello storyboard
  2. Selezionare la casella di controllo Nascondi Barra inferiore Push

enter image description here