我有一个目标iPhone 6应用程序的拆分视图界面。在首次启动该应用程序时,它将打开到“详细信息视图”。我希望它可以打开“主视图”。我努力了:
self.splitViewController?.preferredDisplayMode = UISplitViewControllerDisplayMode.PrimaryOverlay
这是在其他地方建议的,但是它似乎没有任何作用,并且在启动时不会打开Master视图。我还尝试将以下行添加到我的AppDelegate中:
splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
但是,尽管返回true或false另一个先前的堆栈溢出问题,我还是没有成功。
我确实在Xcode中启动了示例Master-Detail应用程序,并基于splitViewController将其加载到Master视图中。但是,我不确定如何以更复杂的布局进行这项工作。
UISplitViewController在纵向细节上方显示主视图并不是要显示主视图,而是要在主视图下方以全角显示“细节”视图。
[iPhone上的肖像中的UISplitViewController显示了详细的VC而不是master是关于合拢机制的原理。
目前的答案是:
您必须设置preferredDisplayMode。您想要的是 .primaryVisible 它是否存在!如果只适合1个视图 (紧凑宽度) ,则使用.allVisibleiOS选择。以该大小,下面的代码将选择。Detail __Master
preferredDisplayMode
.primaryVisible
.allVisible
Detail
Master
关键是要改变 双方 的preferredDisplayMode对.allVisible_和_返回true在collapseSecondary:onto。
true
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 } }