Теперь я вытаскиваю свои волосы, пытаясь решить то, что, как я думал, будет простой функцией. Я использую Xcode 6.2 для создания приложения iOS 8 для iPad с 3 контроллерами. Моя цель - сразу после запуска приложения, оно блокирует все представления в этой ландшафтной ориентации. Если он закрыт и снова открыт в другой ландшафтной ориентации, все виды используют это. Я получил эту работу с кодом ниже, но мне пришлось добавить контроллер навигации, потому что мне нужна панель навигации, и теперь она всегда вращается. Я нашел некоторую информацию, что это может быть ошибка в iOS8. Предложения, которые я пробовал, не разрешили проблему, так как Object-C, это было интересно, но поскольку это не для быстрой, я теряюсь.Shouldautorotate не вызывается после добавления NavigationBar & NavigationController в Swift
iOS 6 shouldAutorotate: is NOT being called
Есть простой способ для достижения этой цели, заставляя Навигационный контроллер, чтобы остановить вращение? Вот фрагмент, который используется для работы и код блокировки экрана в каждом ВК: -
// Get orintation of screen if 'true' Home button on RIGHT
if (UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft) {
Oriention_Number = HomeButtonRight
Screen_Orient_Vert = -1
Screen_Orient_Horiz = 1
} else {
Oriention_Number = HomeButtonLeft
Screen_Orient_Vert = 1
Screen_Orient_Horiz = -1
}
preferences.setInteger(Oriention_Number, forKey: "Oriention_Number_Prefs")
// Lock Screen
override func shouldAutorotate() -> Bool {
return false
}
override func supportedInterfaceOrientations() -> Int {
return Oriention_Number // Landscape HomeButtonLeft = 16 HomeButtonRight = 8
}
Я обновил Xcode & Swift до 1.2 и добавил исходный код в контроллер корневого представления, и теперь все работает правильно. // Lock Screen override func shouldAutorotate() -> Bool {return false} – Andy