我试图模仿Notes和Contacts等应用程序的行为,当我调整窗口大小时,左侧拆分的视图项目会折叠。在使用故事板时,我无法重新创建此行为。
如果我在代码中创建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
}
}
我不知道这是不是一个bug,或者当它来自故事板时,我在NSSplitViewController上遗漏了一个属性来让折叠行为工作。
代码:
故事板:
发布于 2019-08-06 08:00:01
(回答我自己的问题)
我收到了来自苹果的关于我为此提交的雷达的反馈。我可以确认这个问题现在已经在macOS Catalina beta5中得到了解决。
发布于 2019-02-14 23:44:18
您的项目中没有定义拆分视图项。当您在代码中执行此操作时,您通过将拆分视图行为设置为侧边栏来定义保留优先级。如果不从界面构建器中删除拆分视图本身,也可以在界面构建器中执行此操作。然而,折叠侧边栏必须在代码中完成。查看contacts应用程序,我相信他们正在跟踪窗口大小,并在它达到硬编码大小时折叠侧边栏。
https://stackoverflow.com/questions/54365793
复制相似问题