/ / popViewController ne fait pas d'auto-rotation sur l'orientation autorisée - iphone, ipad, uinavigationcontroller, rotation, popviewcontroller

PopViewController ne fait pas d'auto-rotation sur l'orientation autorisée

J'ai deux UIViewControllers, "A" et "B", où"A" annule la valeur shouldAutorotateToInterfaceOrientation pour renvoyer YES pour UIInterfaceOrientationPortrait, et "B" renvoie YES pour toutes les orientations. Dans mon exemple, "A" correspond au contrôleur de vue de navigation racine et j'utilise ensuite pushViewController pour "B". Après cela, je fais pivoter l'appareil en mode paysage, ce qui permet d'autototuer avec succès "B", puis j'ouvre le "B" (bouton de retour ou via popViewController) pour revenir à "A".

Lorsque vous ciblez iPhone OS 3.1.3, "A" revient à l'orientation portrait comme prévu. Lorsque je cible iPhone OS 3.2, j'ai deux effets secondaires:

  1. "A" est affiché en paysage.
  2. La barre de navigation ne se met pas à jour même si"A" est maintenant affiché. La barre de navigation affiche toujours les éléments pour "B". Ce n'est qu'après avoir essayé de revenir en arrière / de sauter une nouvelle fois que la barre de navigation s'anime pour afficher les éléments correspondant à "A". Si au lieu de cela je tente de pousser "B" à nouveau et de revenir, je dois faire apparaître deux fois avant que la barre de navigation s'anime pour afficher les éléments pour "A". Pendant ces "sauts intermédiaires", la vue pour "A" reste affichée.

En recherchant ce problème, j’ai vu d’autresréponses suggérant d’effectuer la rotation manuellement ([UIDevice setOrientation] ou via une transformation), mais cela n’aide pas à comprendre le problème, et surtout pourquoi il se comporte différemment entre les deux systèmes d’exploitation.

Donc ma question est: tous mes UIViewControllers sur la pile UINavigationController doivent-ils prendre en charge exactement les mêmes orientations pour l’avenir? Et si non, y a-t-il quelque chose que je dois faire pour qu'il se comporte comme il l'a fait pour OS 3.1.3?

Réponses:

1 pour la réponse № 1

Il semblerait que les nouveaux systèmes d’exploitation exigent que tous les UIViewControllers de la pile UINavigationController prennent en charge le même ensemble d’orientations.


0 pour la réponse № 2

J'ai le même problème et j'ai trouvé la réponse sur ce lien: Problèmes de pile de navigation UINavigationController en mode paysage l'un de mes contrôleurs de vue n'a pas renvoyé OUI sur shouldAutorotateToInterfaceOrientation.