8

Dans ma barre d'onglets, j'ai quatre viewcontrollers, et ce qui se passe dans l'un peut affecter la vue de l'autre, donc j'ai besoin de recharger certains éléments dans le viewcontroller quand il devient visible. Normalement, je corrige cela en implémentant viewWillAppear, mais quand je passe d'un onglet à l'autre, viewWillAppear ne semble pas être appelé. Comment puis-je résoudre ce problème, ou que devrais-je faire à la place?viewWillAppear dans les viewcontrollers d'une barre d'onglets

Mise à jour: en tant que PS, je dois ajouter que c'est un tabbarcontroller dans une hiérarchie de NavigationController

Vive

Nik

+0

Je ne suis pas sûr que c'est le même problème ... mais peut-être la peine de piller http://stackoverflow.com/questions/131062/iphone-viewwillappear-not-firing/8157562#8157562 – Sean

Répondre

-1

viewWillAppear ne doit être utilisé lorsque la vue apparaît, et non pas pour le mettre à jour .

Utilisez plutôt setNeedsDisplay sur la vue viewController.

+0

D'où devrais-je appeler setNeedsDisplay? Le problème est que j'ai besoin d'un crochet pour quand l'utilisateur choisit un nouveau viewcontroller de la barre d'onglets – niklassaers

+1

Oh, sory, j'ai mélangé les choses ici un petit peu. Je ne suis pas sûr pourquoi le viewWillAppear n'est pas appelé, mais je connais un moyen de contourner le problème: Rendre un objet un délégué tabBarController, et il enverra le message, qu'une nouvelle vue a été sélectionnée, et la vue d'appel sera apparaître à partir de là. – tadejsv

+0

On dirait une idée intéressante, je vais essayer demain :-) – niklassaers

7

Vous pouvez utiliser le délégué du contrôleur TabBar fonctionne comme un charme

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

} 
1

Et si vous trouvez cette question parce que vous souhaitez mettre à jour quelque chose dans le UITabBarController lui-même, pas le UIViewControllers d'un UITabBarController, comme la question de l'OP. Par exemple, masquer ou afficher un UITabBarButton personnalisé. Dans Swift 3.0 écrasant setNeedsStatusBarAppearanceUpdate de ma classe UITabBarController a travaillé pour moi.

override func setNeedsStatusBarAppearanceUpdate() { 

} 
Questions connexes