我已经实现了一个UISplitViewController,一切正常。我想要做的是在iPhone设备上只显示detailView而不是masterView作为第一个视图控制器。我意识到我可以在主视图viewDidLoad方法中从主视图到详细视图创建一个segue,但是这对我来说有点笨拙。也许这是实现我想要的唯一途径?
我已经查看了UISplitViewControllerDelegate的文档,特别是这个函数,但是我觉得我并没有意识到这实际上是在做什么。我还将UISplitViewController设置为委托并设置allVisible并尝试了我的SplitViewController子类的viewDidLoad中的所有其他选项
self.delegate = self
self.preferredDisplayMode = .allVisible
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
如果它有助于故事板中的detailViewController heirachy是SplitViewController> UINavigationController> myDetailViewController
答案 0 :(得分:0)
您需要做的是使用splitviewcontroller委托函数
func splitViewController(_ splitViewController:UISplitViewController,collapseSecondary secondaryViewController:UIViewController,on primaryViewController:UIViewController) - >布尔的的
在那里,您可以将第二个控制器推入第一个导航控制器并返回true。返回true表示您将处理转换。 e.g。
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController:UIViewController, onto primaryViewController:UIViewController) -> Bool {
if let detailViewController = secondaryViewController as? YourSecondViewController, let primaryNV = primaryViewController as? UINavigationController {
primaryNV.pushViewController(detailViewController, animated: false)
returns true // I handle it myself.
}
return false // let the iOS handles it.
}
如果您需要更多说明,请告诉我。我会尝试更好地解释它。欢呼!