我将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/

10-13 23:58