У меня есть контроллер разделенного вида, который имеет список элементов слева и подробный вид справа. Соответствующий код в AppDelegate:
let splitViewController = mainView.instantiateViewControllerWithIdentifier("initial") as! UISplitViewController
let rightNavController = splitViewController.viewControllers.last as! UINavigationController
let detailViewController = rightNavController.topViewController as! DetailsIpad
let leftNavController = splitViewController.viewControllers.first as! UINavigationController
let masterViewController = leftNavController.topViewController as! MainViewController
masterSplitViewController = masterViewController
detailSplitViewController = detailViewController
// Override point for customization after application launch.
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
splitViewController.delegate = self
self.window!.rootViewController = splitViewController
Когда я впервые запускаю приложение, я вижу, что правая часть экрана разделения занимает весь экран:
Если я поверну экран, он будет правильно установлен (вероятно, потому, что оба вида присутствуют на экране):
Когда я устанавливаю точки останова повсюду, я вижу, что подробный вид справа загружается перед основным видом слева (список элементов), несмотря на то, что он не вызывается напрямую. Я не могу изменить порядок отображения представлений разделенного экрана. Как я могу это исправить?
UPDATE:
Я могу установить это перед представлением контроллера с открытым списком:
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
И в ViewDidLoad раздельного контроллера, когда я его печатаю:
print(self.preferredDisplayMode.rawValue)
Я получаю: 2, который является AllVisible. Но результат все тот же.