У меня есть универсальное приложение, которое использует два разных контроллера UISplitview для управления двумя различными наборами данных Master/Detail (один тип данных вложен в Другие).Force UISplitViewController (который программно сделан rootViewController), чтобы начать с главного представления на iPhone в Swift
я перейти от первого в другую, вызывая следующую функцию:
@IBAction func viewEntries(sender: AnyObject) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let entriesSplitView = storyboard.instantiateViewControllerWithIdentifier("entriesSplitView") as! UISplitViewController
entriesSplitView.delegate = self.appDelegate
UIView.transitionWithView(self.view.window!, duration: 0.25, options: .TransitionCrossDissolve, animations:
{
self.appDelegate.window?.rootViewController = entriesSplitView
}, completion: nil)
}
В контроллере мастер просмотра этого вторичного UISplitView, я установил leftBarButton в навигационный контроллер, чтобы вызвать аналогичную функцию для возврата к оригинальный, самый верхний уровень UISplitView.
Моя единственная проблема заключается в том, что я хочу убедиться, что на iPhone первое представление, появившееся после этого перехода, является контроллером подробных представлений, но сначала мне нужен главный ViewController, а затем, чтобы иметь возможность просматривать подробности после этого. Я могу решить, что, добавив:
let masterNavigationController = entriesSplitView.viewControllers[0] as! UINavigationController
masterNavigationController.popToRootViewControllerAnimated(false)
после self.appDelegate.window?.rootViewController = entriesSplitView
, но когда я делаю, есть быстрое мерцание. Если я поставлю его перед этим вызовом, он не будет иметь желаемого эффекта.
Любые идеи относительно правильного способа убедиться, что главный вид называется первым, а также разрешает доступ к подробному представлению?
Почему бы не настроить rootViewController на masterNavigationController? – azimov
Я пробовал это, но это не сработало. То, как оно было обернуто в режиме разделения, находится совсем не так ... контроллер представления деталей не имеет элементов навигационного контроллера, к которому он предназначен, и способ, которым вид мастера подходит, не соответствует действительности. Btw, моя настройка в IB для вторичного uispkitviewcontroller и его дочерних элементов идентична шаблону apple/apple. –