当用户在我的设置视图中单击按钮时,我想更新状态栏中的NSStausItem的button.title属性。但是,NSStatusItem当前不会更改。

AppDelegate:

let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.variableLength)

func applicationDidFinishLaunching(_ aNotification: Notification) {
    statusItem.button?.title = "A title"
}

func updateTitle(newTitle : String) {
    statusItem.button?.title = newTitle
}


SettingsViewController:

@IBAction func didKlickChange(_ sender: Any) {
    AppDelegate().updateTitle(newTitle: "Updated title")
}


当我运行该应用程序时,状态栏将显示一个标题为“ A title”的新StatusItem。很好,到目前为止。
但是,当我按一下按钮时,唯一发生的事情是,新状态项在很短的时间内显示在旧状态项旁边。旧的不会更新。
是否有适当的解决方案?

谢谢你的帮助!

最佳答案

AppDelegate()创建该类的全新实例,而不是您期望的实例。您需要实际参考

@IBAction func didKlickChange(_ sender: Any) {
    (NSApp.delegate as! AppDelegate).updateTitle(newTitle: "Updated title")
}

关于swift - 如何从另一个文件更新NSStausItem?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57512482/

10-11 12:20