Я пытаюсь создать приложение, которое будет отображать дополнительную строку меню в macOS.
Я использовал много кода, который нашел в Интернете, но, хотя все они компилируются, ни один из них не отображает меню.
Фрагменты кода примерно такие:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var statusBarItem: NSStatusItem!
func applicationDidFinishLaunching(_ aNotification: Notification) {
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(
withLength: NSStatusItem.squareLength)
statusBarItem.button?.title = "????"
let statusBarMenu = NSMenu(title: "Cap Status Bar Menu")
statusBarItem.menu = statusBarMenu
statusBarMenu.addItem(
withTitle: "Order a burrito",
action: #selector(AppDelegate.orderABurrito),
keyEquivalent: "")
statusBarMenu.addItem(
withTitle: "Cancel burrito order",
action: #selector(AppDelegate.cancelBurritoOrder),
keyEquivalent: "")
}
@objc func orderABurrito() {
print("Ordering a burrito!")
}
@objc func cancelBurritoOrder() {
print("Canceling your order :(")
}
В меню ничего не отображается. Есть ли что-то, что мне нужно включить, чтобы оно отображало меню? Пробовал и с картинками, тоже не получилось.
statusItemWithLength:
сказано: Получатель не сохраняет ссылку на элемент статуса, поэтому вам нужно сохранить его. В противном случае объект удаляется из строки состояния при освобождении. Возможно, вам следует попытаться сохранить сильную ссылку на вашstatusBarItem
? - person TheNextman   schedule 20.10.2019var statusBarItem: NSStatusItem!
, но, может быть, это должно быть вне класса? - person francisaugusto   schedule 25.10.2019statusBarItem
выходит из области видимости в концеapplicationDidFinishLaunching
и поэтому будет освобождена. Вам нужно сохранить ссылку на уровне класса (член класса или свойство). - person TheNextman   schedule 25.10.2019