C'è un altro caso in cui potrebbe apparire questo messaggio di errore. Ho cercato per ore finché non ho trovato il problema. Questo thread è stato molto utile dopo averlo letto un paio di volte.
Se il controller della vista principale viene ruotato in orientamento orizzontale e si richiama un controller della vista secondaria personalizzato che dovrebbe essere visualizzato in orientamento verticale, questo messaggio di errore può verificarsi quando il codice ha questo aspetto:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationPortrait;
}
La trappola qui era l'intellisense di xcode suggerito "UIInterfaceOrientationPortrait" e non mi importava. A prima vista questo sembrava essere corretto.
La maschera giusta è denominata
UIInterfaceOrientationMaskPortrait
Fai attenzione al piccolo infisso "Maschera" , altrimenti la tua sottoview finirà con un'eccezione e il messaggio di errore menzionato sopra.
Le nuove enumerazioni sono leggermente spostate. Le vecchie enumerazioni restituiscono valori non validi!
(in UIApplication.h puoi vedere la nuova dichiarazione: UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait) )
La soluzione è:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// ATTENTION! Only return orientation MASK values
// return UIInterfaceOrientationPortrait;
return UIInterfaceOrientationMaskPortrait;
}
In rapido utilizzo
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}