Є інший випадок, коли може з’явитися це повідомлення про помилку. Я шукав годинами, поки не знайшов проблему. Ця тема дуже допомогла, прочитавши її пару разів.
Якщо ваш основний контролер подання повернуто в альбомну орієнтацію, і ви викликаєте власний контролер допоміжного перегляду, який повинен відображатися в книжковій орієнтації, це повідомлення про помилку може статися, коли ваш код виглядає так:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationPortrait;
}
Пасткою тут був інтеліссенс xcode, запропонований "UIInterfaceOrientationPor Portrait", і мені це було все одно. На перший погляд це здавалося правильним.
Правильна маска названа
UIInterfaceOrientationMaskPortrait
Зверніть увагу на невеликий інфікс "Маска" , інакше ваш підзакон закінчиться винятком та згаданим вище повідомленням про помилку.
Нові переліки трохи змінені. Старі перелічення повертають недійсні значення!
(в UIApplication.h ви можете побачити нову декларацію: UIInterfaceOrientationMaskPor Portrait = (1 << UIInterfaceOrientationPor Portrait) )
Рішення:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// ATTENTION! Only return orientation MASK values
// return UIInterfaceOrientationPortrait;
return UIInterfaceOrientationMaskPortrait;
}
Швидке використання
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}