UISplitViewController的preferredDisplayMode:行为不正确

时间:2015-06-30 10:11:07

标签: ios iphone swift

我有一个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开始电话开发”。

1 个答案:

答案 0 :(得分:0)

我在我的iPad应用程序中工作了。在主视图控制器中:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    self.splitViewController?.preferredDisplayMode = .Automatic

然后:

wordset

现在尝试了解如何使用iPhone应用程序... 编辑:啊,见this previous answer