2010-08-29 6 views
2

J'ai une application TabBarController avec 4 vues. J'ai mis tous les 4 viewControllers la méthode autorotation retour oui:Rotation de toutes les vues d'un TabBarController

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return YES; 
} 

Merci à cela, maintenant, quand je tourne l'iPhone la rotation fonctionne, et même le TabBar est mis en rotation.

Dans chaque vue unique que je peux utiliser le code suivant pour mettre à jour pour afficher lorsque la rotation se produit:

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    [self adjustViewsForOrientation:toInterfaceOrientation]; 
} 

- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation { 
    if (orientation == UIInterfaceOrientationLandscapeLeft || 
     orientation == UIInterfaceOrientationLandscapeRight) { 

//Here i can update the view when it goes to landscape 

    } 
    else if (orientation == UIInterfaceOrientationPortrait || 
      orientation == UIInterfaceOrientationPortraitUpsideDown) { 

//Here i can update the view when it goes to portrait 

    } 

} 

Le problème est que quand je fais la rotation, seule la vue en cours d'affichage est mise à jour. Si plus tard je change de vue en cliquant sur l'onglet, je vois la vue n'est pas mise à jour pour la nouvelle orientation.

Y a-t-il un moyen de rendre toutes les vues conscientes de l'orientation changée?

Répondre

0

Ok je l'ai trouvé! = D

L'astuce utilise la fonction:

- (void)viewWillAppear:(BOOL)animated 

Il suffit d'appeler dans votre viewControllers et insérer à l'intérieur du code pour mettre à jour la vue. Prendre plaisir!

+0

Marquer comme réponse. – bstahlhood

+0

Je dois attendre jusqu'à demain pour le faire! – Abramodj

+0

Je suppose que cela n'est arrivé que pour les vues que vous avez déjà visitées, mais pas pour celles que vous avez visitées pour la première fois. – fogelbaby

Questions connexes