8

Nella mia TabBar ho quattro viewcontrollers, e ciò che accade in uno può influenzare la vista dell'altro, quindi potrebbe essere necessario ricaricare alcuni elementi in viewcontroller quando diventa visibile. Normalmente lo risolveremo implementando viewWillAppear, ma quando passo tra le schede viewWillAppear sembra non essere richiamato. Come posso aggiustarlo, o cosa dovrei fare invece?viewWillAppear in viewcontrollers di una barra delle linguette

Update: come PS Vorrei aggiungere che si tratta di una tabbarcontroller in una gerarchia navigationController

Acclamazioni

Nik

+0

io non sono sicuro che è lo stesso problema ... ma forse vale la pena di saccheggiare http://stackoverflow.com/questions/131062/iphone-viewwillappear-not-firing/8157562#8157562 – Sean

risposta

-1

viewWillAppear deve essere utilizzato solo quando appare la vista, e non per aggiornarlo .

Usa setNeedsDisplay in mostra 's il viewController invece.

+0

Da dove chiamerei setNeedsDisplay? Il problema è che ho bisogno di un hook per quando l'utente sceglie un nuovo viewcontroller dalla tabbar – niklassaers

+1

Oh, sory, ho mescolato le cose qui un po '. Non sono sicuro del motivo per cui viewWillAppear non viene chiamato, ma conosco un modo per aggirarlo: Crea un oggetto delegato a tabBarController e invierà il messaggio, una nuova vista è stata selezionata e la vista di chiamata sarà apparire da lì. – tadejsv

+0

Sembra un'idea interessante, ci proveremo domani :-) – niklassaers

7

si può utilizzare il delegato del controller barra delle linguette funziona come un fascino

 
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    [viewController viewWillAppear:YES]; 

} 
1

E nel caso in cui si trova questa domanda, perché si desidera aggiornare qualcosa nello stesso UITabBarController, non nello UIViewControllers di un UITabBarController, come nella domanda dell'OP. Ad esempio, nascondere o visualizzare una personalizzata UITabBarButton. In Swift 3.0, la priorità della classe ha prevalso su .

override func setNeedsStatusBarAppearanceUpdate() { 

} 
Problemi correlati