Hay otro caso en el que puede aparecer este mensaje de error. Estuve buscando durante horas hasta que encontré el problema. Este hilo fue muy útil después de leerlo un par de veces.
Si su controlador de vista principal se gira a la orientación horizontal e invoca un controlador de vista secundaria personalizado que debe mostrarse en orientación vertical, este mensaje de error puede ocurrir cuando su código se ve así:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationPortrait;
}
La trampa aquí fue el intellisense sugerido por xcode "UIInterfaceOrientationPortrait" y no me importó. A primera vista, esto parecía correcto.
La máscara correcta se llama
UIInterfaceOrientationMaskPortrait
Tenga en cuenta el pequeño infijo "Máscara" , de lo contrario su subvista terminará con una excepción y el mensaje de error mencionado anteriormente.
Las nuevas enumeraciones se modifican un poco. ¡Las antiguas enumeraciones devuelven valores inválidos!
(en UIApplication.h puede ver la nueva declaración: UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait) )
La solucion es:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// ATTENTION! Only return orientation MASK values
// return UIInterfaceOrientationPortrait;
return UIInterfaceOrientationMaskPortrait;
}
En uso rápido
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}