从Storyboard创建时,NSSplitViewController不会折叠

问题描述 投票:0回答:1

我试图模仿Notes和Contacts等应用程序的行为,当我调整窗口大小时,左侧拆分视图项目会折叠。使用Storyboard时,我无法重新创建此行为。

如果我在代码中创建NSSplitViewController这可以正常工作,但是如果我通过Storyboard这样做它不起作用。

我创建了一个剥离后的项目,唯一的区别是NSSplitViewController实例化的方式:

https://github.com/peteog/NSSplitViewControllerIssue

请参阅MainWindowController第11行和第12行,如果您切换注释然后运行示例应用程序,您将看到行为上的差异:

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上有一个属性,当它来自一个故事板以使崩溃行为起作用时。

码:

Code

故事板:

Storyboard

cocoa appkit nssplitview nssplitviewcontroller
1个回答
0
投票

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


0
投票

(回答我自己的问题)

我收到了Apple关于我提交的雷达的反馈意见。我可以确认这个问题现在已经解决,因为macOS Catalina beta 5。

© www.soinside.com 2019 - 2024. All rights reserved.