【发布时间】:2021-08-04 16:08:57
【问题描述】:
我在 AppDelegate 中手动创建了一个 NSMenu,如下所示:
class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
func applicationDidFinishLaunching(_ notification: Notification) {
rightClickMenu = RightClickMenu.createMenu();
}
我想将我的 NSMenu 的所有触发器保存在一个单独的类中:
class RightClickMenu {
static func createMenu() -> NSMenu {
let menu = NSMenu(title: "Status Bar Menu")
menu.addItem(
withTitle: "Test",
action: #selector(RightClickMenu.test(_:)),
keyEquivalent: "")
return menu
}
//This func never gets triggered and menu item is grey
@objc func test(_ sender: Any?){
print("Test")
}
}
我认为这与声明函数的位置有关。至少我知道它可以在 AppDelegate 中工作,但为什么它在这里不起作用?根本找不到解释这个生命周期的好资料...
我仅来自 SwiftUI 背景,而且我是 Swift 的新手,学习它所基于的所有这些旧技术有点挑战。希望你能帮助我。
看起来是这样的:
【问题讨论】:
-
我会试试谢谢
-
遗憾的是它没有改变任何东西......
-
菜单项的目标是哪个对象?
-
@Willeke 知道了
标签: swift macos nsmenu nsmenuitem