我将NSView子类化为处理mouseDown / rightMouseDown事件。现在我想通过右键单击弹出上下文NSMenu(这是一个IBOutlet)。
NSMenu.popUpContextMenu(statusMenu, withEvent: theEvent, forView: self)
...但它说" statusMenu不是AppDelegate"的成员。我怎样才能访问课堂外的变种?
编辑:
IBOutlet位于AppDelegate:
@IBOutlet weak var statusMenu: NSMenu!
我尝试从我的自定义NSView中调用它:
class customView : NSView {
override func rightMouseDown(theEvent : NSEvent) {
// NSMenu.popUpContextMenu ???
}
}
答案 0 :(得分:1)
有多种方法可以做到这一点:
1)在NSView
中创建一个IBOutlet,并将NSMenu
连接到它。
2)在NSView
中创建一个IBOutlet,将AppDelegate
连接到它,然后通过该出口查看菜单(如果您因某种原因不希望有两个参考文献)到菜单)
3)在NSView
中获取AppDelegate的运行时引用 - 语法为
var appDelegate = NSApplication.sharedApplication().delegate as AppDelegate
并参考菜单。
请注意,在案例3" AppDelegate"是你的AppDelegate类实际上的名称(通常,但不一定," AppDelegate")。对于案例2中的IBOutlet类型也是如此。