La rotation de l'iPhone et de l'instanciation d'un UIViewController?
Je tiens à mettre en oeuvre les. Lorsque l'utilisateur fait pivoter l'iPhone, je veux instancier un nouvel UIViewController (automatiquement lors de la rotation, pas de cliquer sur un bouton ou l'exécution d'une action similaire) et de l'afficher à l'utilisateur une vue traitées par cette nouvelle UIViewController en orientation paysage. Comment le faire correctement ?
J'ai essayé d'instancier le nouveau contrôleur dans les méthodes willRotateToInterfaceOrientation et didRotateFromInterfaceOrientation, mais aucune de ces méthodes est appelée!. Je soupçonne que c'est parce que le régulateur de courant est poussé par une manette de navigation qui est lui-même manipulé par un tabBarController. Aucun indice? Un simple extrait de code serait grandement apprécié.
Vous en remercie d'avance.
Vous devez vous connecter pour publier un commentaire.
J'ai mis en place exacte de ce type de comportement sur une application et la clé est de s'assurer que tout parent contrôleurs de mettre en œuvre shouldAutorotateToInterfaceOrientation et que votre vue actuelle contrôleur aussi qu'il implémente. Dans mon cas, je suis en utilisant un onglet contrôleur qui intercepte l'appel à shouldAutorotateToInterfaceOrientation et j'ai dû remplacer l'onglet contrôleur pour obtenir de l'appel à tomber. Le comportement par défaut de la vue des contrôleurs est de l'affichage en mode portrait uniquement.
Si vous avez besoin de les forcer à permettre à tous les changements d'orientation par le biais de:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
de retour OUI;
}
Puis dans l'ordre de charger un nouveau point de vue contrôleur, vous devez répondre à:
et peut également utiliser:
Pour détecter que le changement d'orientation est à venir.
Dans mon cas, je suis en utilisant didRotateFromInterfaceOrientation pour vérifier si la dernière orientation portrait et, dans l'affirmative charge le point de vue que je veux affiché en mode paysage.
J'ai ensuite mis en œuvre les mêmes méthodes dans le viewcontroller je suis de chargement et il est chargé de détecter les changements d'orientation de retour au portrait et à la révocation de l'affichage de la pile.
Espère que ça aide un peu.
Paul
D'une façon plus propre est de ne PAS utiliser UIInterfaceOrientation pour la rotation.
Pourquoi, parce qu'alors votre interface ou de la vue 1 en fait tourne. Cela signifie que vous avez à faire tourner en arrière pour l'afficher de nouveau une fois la vue 2 est supprimé.
Pour compenser, j'simple abonnez-vous à UIDeviceOrientation notifications. Subtilement différentes. Afficher 1 à ne PAS avoir de soutien autorotation pour rendre cette méthode de travail. Dans le viewDidLoad entrez le code suivant:
Ensuite, il suffit de définir la méthode detectOrientation:
Présent, ni de vos points de vue ont besoin de soutien autoratation! Il vous sera toutefois nécessaire d'effectuer une transformation sur la vue 2 avant le chargement:
C'est comment je échanger leurs points de vue o la rotation sans le soutien de l'autorotation dans mes vues.
En effet que la top-contrôleur de niveau est notifié. Vous êtes responsable de la notification imbriqués les contrôleurs.
L'ajouter à votre barre d'onglet contrôleur:
- Vous mettre en œuvre shouldAutorotateToInterfaceOrientation? Si pas, c'est peut-être pourquoi vous n'obtenez pas les messages.