Il existe un autre cas où ce message d'erreur peut apparaître. J'ai cherché pendant des heures jusqu'à ce que je trouve le problème. Ce fil de discussion a été très utile après l'avoir lu plusieurs fois.
Si votre contrôleur de vue principal est tourné en orientation paysage et que vous invoquez un contrôleur de vue secondaire personnalisé qui devrait être affiché en orientation portrait, ce message d'erreur peut se produire lorsque votre code ressemble à ceci :
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationPortrait;
}
Le piège ici était que l'intellisense de xcode suggérait "UIInterfaceOrientationPortrait" et que je ne m'en souciais pas. A première vue, cela semblait correct.
Le masque de droite est nommé
UIInterfaceOrientationMaskPortrait
Attention au petit infixe "Masque" sinon votre sous-vue se retrouvera avec une exception et le message d'erreur mentionné ci-dessus.
Les nouveaux enums sont décalés en bits. Les anciens enums renvoient des valeurs invalides !
(dans UIApplication.h vous pouvez voir la nouvelle déclaration : UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait) )
La solution est la suivante :
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// ATTENTION! Only return orientation MASK values
// return UIInterfaceOrientationPortrait;
return UIInterfaceOrientationMaskPortrait;
}
En utilisation rapide
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
1 votes
Vous devriez accepter une réponse. il y a beaucoup de gens pour l'aide et pour d'autres personnes qui ont le même problème il aide dehors quand vous marquez la réponse correcte pour votre problème !
1 votes
Non ! aucune solution ne fonctionne sur iOS 7 :( (headbang)
0 votes
Meilleure réponse ici stackoverflow.com/questions/20468335/