Há outro caso em que essa mensagem de erro pode aparecer. Fiquei procurando por horas até encontrar o problema. Este tópico foi muito útil depois de lê-lo algumas vezes.
Se o seu controlador de visualização principal for girado para a orientação paisagem e você invocar um controlador de visualização secundária personalizado que deve ser exibido na orientação retrato, essa mensagem de erro pode ocorrer quando seu código se parece com este:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationPortrait;
}
A armadilha aqui foi o intellisense do xcode sugerido "UIInterfaceOrientationPortrait" e eu não me importei com isso. À primeira vista, isso parecia correto.
A máscara certa é nomeada
UIInterfaceOrientationMaskPortrait
Esteja ciente do pequeno infixo "Máscara" , caso contrário, sua subvisão terminará com uma exceção e a mensagem de erro mencionada acima.
Os novos enums são um pouco alterados. Os enums antigos retornam valores inválidos!
(em UIApplication.h você pode ver a nova declaração: UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait) )
A solução é:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// ATTENTION! Only return orientation MASK values
// return UIInterfaceOrientationPortrait;
return UIInterfaceOrientationMaskPortrait;
}
Em uso rápido
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}