Вот что происходит:
Я пытаюсь создать приложение Mac Status Bar полностью программно.Кажется, все работает нормально, то есть меню отображается в строке состояния 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??")
}
}