右键单击NSView(Swift)弹出NSMenu

时间:2015-02-02 09:33:39

标签: swift nsview nsmenu

我将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 ???
  }
}

1 个答案:

答案 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类型也是如此。