我有一个master-detail应用程序(我使用Xcode模板创建它,然后我对它进行了一些修改),我正在尝试设置UISplitViewController的preferredDisplayMode属性来获取此行为:
UISplitViewControllerDisplayMode.PrimaryOverlay:主视图控制器位于辅助视图控制器的顶部,使辅助视图控制器部分可见。
因此,主视图控制器应该最初位于详细视图控制器的顶部,并且应该可以将其关闭。我在application:didFinishLaunchingWithOptions:中更改了这个属性,这是完整的代码:
// Inside application:didFinishLaunchingWithOptions:
// Override point for customization after application launch.
let rootViewController = window!.rootViewController as! UINavigationController
// The root view controller is a navigation controller that contains the split view controller
let splitViewController = rootViewController.viewControllers[0] as! UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
splitViewController.delegate = self
splitViewController.preferredPrimaryColumnWidthFraction = 0.4
splitViewController.maximumPrimaryColumnWidth = 600
splitViewController.preferredDisplayMode = .PrimaryOverlay
return true
我有两个问题:首先,这不是我获得的行为。应用程序启动时隐藏主视图控制器,如果单击左侧栏按钮项目以显示主控制器,它将快速显示,然后再次消失。如果我再次点击它而不会消失。
其次,我在控制台中收到警告:
2015-06-30 12:06:26.613 Presidents[29557:857547] Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0x7b8be610>.
但我的代码中没有转换。
PS:来自D. Mark,J。Nutting,K。Topley,F。Olsson,J。LaMarche,第11章的书“用Swift开始电话开发”。
答案 0 :(得分:0)
我在我的iPad应用程序中工作了。在主视图控制器中:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.splitViewController?.preferredDisplayMode = .Automatic
然后:
wordset
现在尝试了解如何使用iPhone应用程序... 编辑:啊,见this previous answer