我有一个带有目标 iPhone 6 应用程序的分割视图界面。首次启动应用程序时,它会打开详细信息视图;我希望它能向主视图打开。我努力了:
self.splitViewController?.preferredDisplayMode = UISplitViewControllerDisplayMode.PrimaryOverlay
这是其他地方建议的(之前的 StackOverFlow 问题) https://stackoverflow.com/questions/27849654/uisplitviewcontroller-display-master-view-above-detail-in-portrait-orientation但它似乎没有做任何事情,并且在启动时不会打开主视图。我还尝试将以下行添加到我的 AppDelegate 中:
splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
但无论返回 true 或 false (另一个先前的堆栈溢出问题 https://stackoverflow.com/questions/25875618/uisplitviewcontroller-in-portrait-on-iphone-shows-detail-vc-instead-of-master)我没有成功。
我确实在 Xcode 中启动了示例 Master-Detail 应用程序,它基于 splitViewController: 调用返回 false; 加载到主视图。但是,我不确定如何在更复杂的布局中使其工作。
Swift
UISplitViewController 在纵向细节上方显示主视图 https://stackoverflow.com/questions/27849654/uisplitviewcontroller-display-master-view-above-detail-in-portrait-orientation不是显示主视图,而是在主视图下方以全角显示详细视图。
iPhone 上的纵向 UISplitViewController 显示细节 VC 而不是主视图 https://stackoverflow.com/questions/25875618/uisplitviewcontroller-in-portrait-on-iphone-shows-detail-vc-instead-of-master是关于崩溃机制的原理。
目前的答案涉及:
-
Master → Detail (Compact width)
- iPhone 4s、5、5s、SE、6、6s、7(任何方向)
- iPod触摸
- 任何 iPhone Plus(纵向)
-
side-by-side (all other sizes)
您必须设置preferredDisplayMode
。你想要的是.primaryVisible
如果它存在的话!使用.allVisible
, iOS精选Detail
如果只有 1 个视图适合(紧凑宽度);在这个尺寸下,下面的代码将选择Master
.
秘诀就是改变both the preferredDisplayMode
to .allVisible
and回来true
in collapseSecondary:onto
.
class PrimarySplitViewController: UISplitViewController,
UISplitViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
self.preferredDisplayMode = .allVisible
}
func splitViewController(
_ splitViewController: UISplitViewController,
collapseSecondary secondaryViewController: UIViewController,
onto primaryViewController: UIViewController) -> Bool {
// Return true to prevent UIKit from applying its default behavior
return true
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)