我制作了一个自定义CustomView.xib。它由CustomView.swift拥有,后者是NSView的子类。现在,只需添加NSView并将其类设置为CustomView,即可轻松在Storyboard中重用CustomView。问题是我在CustomView.xib中有一个按钮,并且每当单击它时,我都希望显示一个弹出式MyPopoverViewController。我在Google上搜索后发现,要显示弹出窗口,我需要使用以下方法:
gridOptions.sideBar
问题在于此方法仅可从NSViewController使用。但是我没有。我想从NSView触发弹出窗口。我现在应该怎么办?这应该是可能的,因为NSAlert在任何地方都可以使用,甚至不需要任何NSViewController作为参数。因此,应该有一种无需任何NSViewController即可显示弹出窗口的方法。
答案 0 :(得分:1)
这是将现有视图控制器显示为弹出窗口的便捷方法。
听起来您要创建并显示一个新的弹出框。为此,您需要创建一个NSPopover
对象。实际上,这是弹出窗口的控制器。
您的NSPopover
具有contentViewController: NSViewController
属性,而该属性具有view: NSView
属性。这些是视图控制器和视图,它们将显示在弹出窗口中。
如何创建这些取决于您。您可以通过编程方式构建它们,但是如果这是嵌入在其他笔尖/ storyboard文件中的可重用视图,则建议在其自己的笔尖文件中定义popover视图和视图控制器,使NSPopover
对象成为笔尖的所有者。然后,您需要显示这样的弹出窗口(用Safari编写):
let popover = NSPopover()
if Bundle.loadNibNamed(nibName: "MyViewPopover", owner: popover, topLevelObjects:nil) {
...
popover.show(relativeTo: view.bounds, of: view, preferredEdge: NSRectEdgeMinX)