我将NSView子类化以处理mouseDown / rightMouseDown事件。现在,我想通过右键单击弹出上下文NSMenu(这是IBOutlet)。
NSMenu.popUpContextMenu(statusMenu, withEvent: theEvent, forView: self)
...但是它说“ statusMenu不是AppDelegate的成员”。我如何在课堂外访问vars?
编辑:
位于AppDelegate中的IBOutlet ist:
@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类的名称(通常,但不一定是“ AppDelegate”)。对于情况2,IBOutlet的类型也是如此。
关于swift - 右键单击NSView弹出NSMenu(Swift),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28274609/