2013-04-05 16 views
6

Sto sviluppando un'applicazione ios e in quella app utilizzando un controller di tabbar. E dal controller della barra delle schede im navigazione verso un altro controller di visualizzazione. Prima di spingere la vista controllore imposta una proprietà di tale regolatoreBarra delle schede che appare dopo aver scoccato un controller di visualizzazione

viewController.hidesBottomBarWhenPushed = YES; 

E im visualizzando un'altra controller della vista che ha la barra delle schede in basso im.

Il problema è quando il controller di visualizzazione torna al controller di visualizzazione anche la barra delle schede viene visualizzata in quella vista. C'è un modo per nascondere la barra delle schede quando si apre un controller di visualizzazione?

Sarebbe bello se qualcuno mi può aiutare con questo.

Grazie in anticipo.

+0

mostra il codice come hai inserito la tabbar? –

risposta

3

In tal caso, il metodo viewWillAppear sarà utile. nel vostro firstviewcontroller inserire questo codice

-(void)viewWillAppear:(BOOL)animated 
{ 
    self.tabBarController.tabBar.hidden = YES; 
} 

Così, quando secondviewcontroller poped fuori allora chiamerà questo metodo e la vostra barra inferiore sarà nascosto.

+0

Ho provato questo, ma questo non funzionerà perché il controller di visualizzazione non viene effettivamente premuto a questo punto. Lo scenario è quando l'utente torna indietro. – era

+1

Questo metodo viene chiamato quando l'utente torna indietro non quando l'utente ha premuto un'altra vista, quindi è necessario dichiarare 'viewController.hidesBottomBhenWhenPushed = YES;' 2 volte. prima in 'viewDidLoad' e seconda in' viewWillAppear' mthod. – Dilip

+0

Ho provato a impostare l'attributo in vista ha caricato troppo .. ma ancora la tabbar è lì. – era

0

Luogo questo quando si fa clic sul pulsante Indietro

[self.tabBarController.tabBar setHidden:YES]; 

[UIView animateWithDuration:0.5 
        animations:^{ 
         self.tabBarController.tabBar.frame = CGRectMake(self.tabBarController.tabBar.frame.origin.x, self.tabBarController.tabBar.frame.origin.y+self.tabBarController.tabBar.frame.size.height, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height); 
       } 

Ho una un'altra risposta ...

Luogo questi due metodi in tutto il ViewController e gestire ilBOOL Variabile che èself.hidesBottomBarWhenPushed a YES e NOsecondo il vostro requisito

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.hidesBottomBarWhenPushed = YES; 
} 
- (void)viewDidDisappear:(BOOL)animated 
{ 
    self.hidesBottomBarWhenPushed = NO; 
} 
+0

ho provato anche questo. Il fatto è che puoi nascondere la barra delle schede, lasciando uno spazio vuoto in basso. Quando ho provato a impostare la vista a schermo intero, non ha funzionato. – era

+0

Come hai detto, in primo luogo firstview ha la barra in basso e poi lo spinge si nasconde giusto? e quando è spuntato dal viewController spinto allora dovrebbe nascondersi ... è questo il tuo requisito o mi manca qualcosa –

+0

firstview (ha la barra in basso) -> secondview (nasconde la barra in basso) -> thirdview (ha la barra in basso) Quindi im popping la terza vista e tornare indietro alla seconda vista la barra in basso è lì .. ho bisogno di sbarazzarsi di esso. se faccio quello che hai suggerito, lascerò uno spazio vuoto in fondo. – era

0

Dipende dal design del tuo app, è possibile impostare un oggetto centrale come delegato del controller di navigazione. E nascondere/mostrare la barra delle schede. questa domanda hidesBottomBarWhenPushed but when popped fornisce anche una soluzione che tuttavia non mi piace. A proposito, non è comune mostrare di nuovo la barra in basso quando l'utente naviga fino al secondo o livello più profondo.

0

È invece possibile presentare il secondo controller della vista sul controller della barra delle linguette. Se si desidera che il secondo controller della vista abbia una barra di navigazione, è possibile inserirlo in un nuovo controller di navigazione.

Se in questo modo non si risolve il problema, è possibile creare un controller di barra delle schede personalizzato in modo che possa trovarsi all'interno di un controller di navigazione. È possibile spingere il secondo controller della vista su quel controller di navigazione. Per creare un controller barra delle schede personalizzato, è possibile fare riferimento a Apple Documentation on Creating Custom Container View Controllers. Penso che funzioni bene su iOS 5 e versioni successive.

Problemi correlati