我想问一下,为什么可以通过从按钮拖动到popover
或sheet
来创建一个NSWindow
或NSView
的segue,而不是从工具栏项?
从工具栏中只允许使用:show,modal和custom
答案 0 :(得分:0)
虽然我不确定为什么通过在Interface Builder中拖动也无法实现,但您仍然可以使用目标/操作机制手动显示弹出窗口。您的工具栏按钮会调用presentFooPopover(:)
之类的操作,而NSViewController
会调用presentViewController(_ viewController: NSViewController, asPopoverRelativeTo positioningRect: NSRect, of positioningView: NSView, preferredEdge: NSRectEdge, behavior: NSPopover.Behavior)
presentViewController...
从某些位置调出popover的目标视图控制器视图。
呈现视图控制器(您在其上调用positioningRect
)不必拥有您用于定位的视图。另请注意,positioningView
必须位于bounds
的坐标系中,因此通常会使用视图sender
。
将所有这些组合在一起,您可以将按钮(动作中的[a-zA-Z]
)作为定位视图传递并使用其边界。负责呈现弹出窗口的视图控制器可以是您的窗口控制器或窗口的内容视图控制器(或者实际上任何在弹出窗口仍然呈现时不会消失的东西,这也会消除弹出窗口)。