0

我试图模仿笔记和联系人等应用程序的行为,当我调整窗口大小时,左侧拆分视图项目会折叠。使用情节提要时,我无法重新创建此行为。

如果我在代码中创建 NSSplitViewController 这工作正常,但是如果我通过情节提要这样做它就行不通。

import Cocoa

class MainWindowController: NSWindowController {
    override var windowNibName: NSNib.Name? {
        return "MainWindowController"
    }

    override func windowDidLoad() {
        super.windowDidLoad()

//        let splitViewController = NSSplitViewController()
        let splitViewController = NSStoryboard(name: "Storyboard", bundle: nil).instantiateInitialController() as! NSSplitViewController

        let sidebarSplitViewItem = NSSplitViewItem(sidebarWithViewController: SidebarViewController())
        splitViewController.addSplitViewItem(sidebarSplitViewItem)

        let contentSplitViewItem = NSSplitViewItem(viewController: ContentViewController())
        splitViewController.addSplitViewItem(contentSplitViewItem)

        contentViewController = splitViewController
    }    
}

我不知道这是一个错误,还是我在 NSSplitViewController 上缺少一个属性,当它来自 Storyboard 以使折叠行为起作用时。

代码:

代码

故事板:

故事板

4

2 回答 2

0

您的项目中没有定义拆分视图项。当您在代码中执行此操作时,您通过将拆分视图行为设置为侧边栏来定义持有优先级。如果您不从界面构建器中删除拆分视图本身,您也可以在界面构建器中执行此操作。但是折叠侧边栏必须在代码中完成。查看联系人应用程序,我相信他们正在跟踪窗口大小,并在达到硬编码大小时折叠侧边栏。

于 2019-02-14T23:44:18.340 回答
0

(回答我自己的问题)

我收到了 Apple 关于我为此申请的雷达的反馈。我可以确认从 macOS Catalina beta 5 开始,该问题已得到修复。

于 2019-08-06T08:00:01.443 回答