gpt4 book ai didi

swift - 右键单击 NSView (Swift) 弹出 NSMenu

转载 作者:行者123 更新时间:2023-11-30 10:19:09 25 4
gpt4 key购买 nike

我对 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) 在 NSView 中创建一个 IBOutlet 并将 NSMenu 连接到它。

2) 在您的 NSView 中创建一个 IBOutlet,将您的 AppDelegate 连接到它,并通过该 socket 引用菜单(如果您出于某种原因不想这样做)有两个菜单引用)

3) 在 NSView 中获取对 AppDelegate 的运行时引用 - 语法为

var appDelegate = NSApplication.sharedApplication().delegate 作为 AppDelegate

并通过它引用菜单。

请注意,在情况 3 中,“AppDelegate”是您的 AppDelegate 类实际的名称(通常但不一定是“AppDelegate”)。对于情况 2 中的 IBOutlet 类型也是如此。

关于swift - 右键单击 NSView (Swift) 弹出 NSMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28274609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com