Dans un autre cas, ce message d'erreur peut apparaître. J'ai cherché pendant des heures jusqu'à ce que je trouve le problème. Ce fil 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 l'intellisense de xcode suggéré "UIInterfaceOrientationPortrait" et je m'en fichais. À première vue, cela semblait correct.
Le bon masque est nommé
UIInterfaceOrientationMaskPortrait
Faites attention au petit infixe "Mask" , sinon votre sous-vue se retrouvera avec une exception et le message d'erreur mentionné ci-dessus.
Les nouvelles énumérations sont légèrement décalées. Les anciennes énumérations renvoient des valeurs invalides!
(dans UIApplication.h, vous pouvez voir la nouvelle déclaration: UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait) )
La solution est:
- (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)
}