【发布时间】:2019-02-21 21:09:52
【问题描述】:
这是怎么回事:
我正在尝试完全以编程方式构建 Mac 状态栏应用程序。一切似乎都工作正常,即菜单显示在 Mac 状态栏中,下拉菜单显示它应该如何。但是当我点击菜单项时,什么也没有发生。我什至将目标函数更改为只执行打印到终端的基本任务,什么都不做。
关于代码:
我认为问题出在附近:
menu.addItem(NSMenuItem(title: val, action: #selector(toggleService), keyEquivalent: ""))
该代码应该触发 > toggleService 功能。但它什么也没做。问题可能是因为我只是从 NSObject 类继承吗?
代码
// StatusBar.swift
import Cocoa
class StatusBar: NSObject {
var menuButton = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
var menu = NSMenu()
var service = Service()
override init() {
super.init()
menuButton.button?.image = NSImage(named: NSImage.Name("icon"))
menuButton.menu = menu
menu.autoenablesItems = false
for (_, val) in service.list {
menu.addItem(NSMenuItem(title: val, action: #selector(toggleService), keyEquivalent: ""))
}
menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(title: "Quit", action: #selector(quit), keyEquivalent: ""))
}
@objc func toggleService(sender: NSMenuItem) {
print ("Say Something.. anything??")
}
@objc func quit(sender: NSMenuItem) {
print ("Say Something.. anything??")
}
}
【问题讨论】: