2010-08-21 3 views
5

Je remplace -orientationChanged dans mon ViewController principal pour pousser ModalViewController A lorsque le périphérique est en mode paysage. Lorsqu'il est replacé en mode portrait, ModalViewController A est fermé. Cependant, il existe d'autres cas (après des touches) où les contrôleurs ModalView B, C ou D sont affichés. Lorsque ceux-ci sont affichés, si l'appareil est mis en mode paysage et retourné, ModalViewController B C ou D est rejeté, de manière inappropriée.Comment puis-je savoir si un ModalViewController est affiché?

Je peux vérifier que -orientationChanged sur mon ViewController principal est en cours de messagerie même lorsqu'un ModalViewController est affiché. Existe-t-il une condition que je peux ajouter à ma méthode -orientationChanged pour contourner ce code lorsque ModalViewController B C ou D est affiché?

Merci!

Répondre

6

Vous pouvez vérifier si la propriété modalViewController de votre contrôleur de vue principal est l'un de vos contrôleurs de vue.

+2

Merci, cela a fonctionné. J'ai utilisé le conditionnel: if ([self.modalViewController isMemberOfClass: [classe UINavigationController]]) ... – ed94133

1

Vous pouvez utiliser ce code pour trouver quel est le dernier ModalViewController.

UIViewController *leafController = self; 
while(true) { 
    if (leafController.modalViewController) { 
     leafController = leafController.modalViewController; 
     continue; 
    } 
    break; 
} 
[leafController presentModalViewController:showController animated:YES]; 
Questions connexes