【发布时间】:2017-07-11 18:04:38
【问题描述】:
我遇到了一个问题,在我将UINavigationController 上的rootViewController 更改为我原来的UINavigationController 后,UISplitViewController 开始在手机设备中显示它的主视图和详细视图紧凑/纵向(不仅适用于大尺寸手机,也适用于其他手机)。
架构的基本概述:
TabBarController 包含多个选项卡。这些选项卡之一是UISplitViewController。我目前覆盖以下内容以确保MasterViewController 显示在紧凑的方向上:
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
// this prevents phone from going straight to detail on showing the split view controller
return true
}
这可以正常工作并按预期在纵向上显示母版。在任何时候按下另一个选项卡上的按钮都可以创建一个新的UINavigationController 实例并显示它,其中我正在执行以下操作以将rootViewController 更改为新创建的UINavigationController 以显示:
let appDelegate = UIApplication.shared.delegate
appDelegate?.window??.rootViewController = newNavVC
关闭时,我只是通过上面相同的代码将UINavigationController 换回原来的那个。但是,一旦我这样做了一次(创建导航/显示/关闭),并将我的选项卡切换回带有UISplitViewController 的选项卡,它就会自行更改以显示并排的主详细信息视图。我不知道这在纵向模式下可以实现紧凑的尺寸。我尝试更改为 UISplitViewController 中的 4 种首选显示模式中的任何一种,但这并没有解决问题。
下面是它的样子(iPhone 6 模拟器),我是错过了代表还是误解了崩溃?
之前:
之后:
【问题讨论】:
标签: ios swift uinavigationcontroller uisplitviewcontroller