在某些情况下(例如,当点击通用链接时),我希望强制应用始终显示主视图控制器。
我该怎么做?
有没有办法通过编程方式从细节切换回主控?
在某些情况下(例如,当点击通用链接时),我希望强制应用始终显示主视图控制器。
我该怎么做?
有没有办法通过编程方式从细节切换回主控?
您可以设置preferredDisplayMode
self.splitViewController?.preferredDisplayMode = UISplitViewControllerDisplayMode.allVisible
或者,如果你正在寻找的东西像一个切换操作:
extension UISplitViewController {
func toggleMasterView() {
let barButtonItem = self.displayModeButtonItem
UIApplication.shared.sendAction(barButtonItem.action!, to: barButtonItem.target, from: nil, for: nil)
}
}
用法:
self.splitViewController?.toggleMasterView()
拆分视图控制器是一个野兽,而且文件很混乱。最好把它看作是以两种不同的模式运作:崩溃与否。当分割视图以横向紧凑视图(即iPhone)显示时,适用折叠模式,否则折叠模式不折叠(即iPad)。
财产preferredDisplayMode仅适用于视图未折叠(即iPad),并且您可以使用它来选择主视图或详细视图。
在折叠模式下,除非使用的是导航控制器,原始主视图可以被丢弃:
已经折叠后,将具有在其viewControllers 只有一个子视图控制器拆分视图控制器报告属性。该 其他视图控制器被折叠成其他视图控制器的 内容与委托对象的帮助或暂时放弃
但它是更好的使用的导航控制器,如分割视图控制器被设计为工作在与他们合作:
分割视图控制器知道如何以更直观的方式调整接口。它甚至可以与其他容器视图控制器 (如导航控制器)一起使用以呈现视图控制器。
如果使用导航控制器,然后原来的主视图可以是在导航堆栈的底部:
在水平紧凑环境中,分割视图控制器作用 更像一个导航控制器最初显示的主视图 控制器和推或弹出需要
所以,你可以这样做次要视图 控制器这个:
if split.isCollapsed,
let nav = split.viewControllers[0] as? UINavigationController
{
nav.popToRootViewController(animated:false)
} else {
split.preferredDisplayMode = .allVisible
}
(它可以变得更复杂,如果你的主视图在主视图中推动视图以及显示细节视图。此代码将弹出到主视图导航堆栈的根)
这是你在找什么:http://stackoverflow.com/questions/25875618/uisplitviewcontroller-in-portrait-on-iphone-shows- detail-vc-instead-of-master – zombie
你好@zombie这个答案似乎在讨论总是通过设置一些委托函数来启动应用程序。但在我的情况下,我想手动关闭详细视图控制器。必须有办法做到这一点? –