当用户在我的设置视图中单击一个按钮时,我想更新状态栏中的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。很好,到目前为止。 但是,当我按一下按钮时,唯一发生的是新状态项在旧状态项旁边很短的时间出现。旧的不会更新。 有合适的解决方案吗?
感谢您的帮助!
答案 0 :(得分:0)
AppDelegate()
创建该类的全新实例,而不是您期望的实例。您需要实际的参考
@IBAction func didKlickChange(_ sender: Any) {
(NSApp.delegate as! AppDelegate).updateTitle(newTitle: "Updated title")
}