从 Storyboard 创建时,NSSplitViewController 不会折叠
NSSplitViewController doesn't collapse when created from a Storyboard
我正在尝试模仿 Notes 和 Contacts 等应用程序的行为,当我调整 window 大小时,左侧拆分视图项目会折叠。使用 Storyboard 时我无法重现此行为。
如果我在代码中创建 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 以使折叠行为起作用时。
代码:
故事板:
您的项目中没有定义拆分视图项。当您在代码中执行此操作时,您通过将拆分视图行为设置为侧边栏来定义持有优先级。如果您不从界面生成器中删除拆分视图本身,您也可以在界面生成器中执行此操作。
但是折叠侧边栏必须在代码中完成。
查看联系人应用程序,我相信他们正在跟踪 window 大小,并在达到硬编码大小时折叠边栏。
(回答我自己的问题)
我收到了 Apple 对我为此提交的 Radar 的反馈。我可以确认此问题现已在 macOS Catalina beta 5 中得到修复。
我正在尝试模仿 Notes 和 Contacts 等应用程序的行为,当我调整 window 大小时,左侧拆分视图项目会折叠。使用 Storyboard 时我无法重现此行为。
如果我在代码中创建 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 以使折叠行为起作用时。
代码:
故事板:
您的项目中没有定义拆分视图项。当您在代码中执行此操作时,您通过将拆分视图行为设置为侧边栏来定义持有优先级。如果您不从界面生成器中删除拆分视图本身,您也可以在界面生成器中执行此操作。 但是折叠侧边栏必须在代码中完成。 查看联系人应用程序,我相信他们正在跟踪 window 大小,并在达到硬编码大小时折叠边栏。
(回答我自己的问题)
我收到了 Apple 对我为此提交的 Radar 的反馈。我可以确认此问题现已在 macOS Catalina beta 5 中得到修复。