右键单击 NSView 时弹出 NSMenu (Swift)
Popup NSMenu on right-click on NSView (Swift)
我子class 了一个 NSView 来处理 mouseDown/rightMouseDown 事件。现在我想通过右键单击弹出一个上下文 NSMenu(这是一个 IBOutlet)。
NSMenu.popUpContextMenu(statusMenu, withEvent: theEvent, forView: self)
... 但它显示 "statusMenu is not a member of AppDelegate"。我如何访问 class 之外的变量?
编辑:
IBOutlet 位于 AppDelegate 中:
@IBOutlet weak var statusMenu: NSMenu!
我尝试从我的自定义 NSView 中调用它:
class customView : NSView {
override func rightMouseDown(theEvent : NSEvent) {
// NSMenu.popUpContextMenu ???
}
}
您可以通过多种方式执行此操作:
1) 在您的 NSView
中创建一个 IBOutlet 并将 NSMenu
连接到它。
2) 在你的 NSView
中创建一个 IBOutlet,将你的 AppDelegate
连接到它,并通过该插座引用菜单(如果你出于某种原因不想有两个引用到菜单)
3) 获取对 NSView
中 AppDelegate 的运行时引用 - 语法为
var appDelegate = NSApplication.sharedApplication().delegate as AppDelegate
并通过它参考菜单。
请注意,如果 3 "AppDelegate" 是您的 AppDelegate class 实际的名称(通常,但不一定是 "AppDelegate")。情况2中IBOutlet的类型也是如此。
我子class 了一个 NSView 来处理 mouseDown/rightMouseDown 事件。现在我想通过右键单击弹出一个上下文 NSMenu(这是一个 IBOutlet)。
NSMenu.popUpContextMenu(statusMenu, withEvent: theEvent, forView: self)
... 但它显示 "statusMenu is not a member of AppDelegate"。我如何访问 class 之外的变量?
编辑:
IBOutlet 位于 AppDelegate 中:
@IBOutlet weak var statusMenu: NSMenu!
我尝试从我的自定义 NSView 中调用它:
class customView : NSView {
override func rightMouseDown(theEvent : NSEvent) {
// NSMenu.popUpContextMenu ???
}
}
您可以通过多种方式执行此操作:
1) 在您的 NSView
中创建一个 IBOutlet 并将 NSMenu
连接到它。
2) 在你的 NSView
中创建一个 IBOutlet,将你的 AppDelegate
连接到它,并通过该插座引用菜单(如果你出于某种原因不想有两个引用到菜单)
3) 获取对 NSView
中 AppDelegate 的运行时引用 - 语法为
var appDelegate = NSApplication.sharedApplication().delegate as AppDelegate
并通过它参考菜单。
请注意,如果 3 "AppDelegate" 是您的 AppDelegate class 实际的名称(通常,但不一定是 "AppDelegate")。情况2中IBOutlet的类型也是如此。