swift - 如何在类外更改 NSStatusItem

标签 swift macos nsstatusitem

我在名为 StatusMenuController 的类中创建一个 NSStatusItem,如下所示

class StatusMenuController: NSObject {

let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)

override func awakeFromNib() {
    let icon = NSImage(named: "MenuBar")
    icon?.isTemplate = true // best for dark mode

    if let button = statusItem.button {
        button.image = icon
        button.action = #selector(StatusMenuController.showPomoNow)
        button.sendAction(on: [.leftMouseUp, .rightMouseUp])
        button.target = self
    }
    statusItem.title = "25:00"
}

我可以在这个类上轻松更改标题。它会像我预期的那样改变。

我在AppDelegate中引用了这个类

let statusMenu = StatusMenuController()

在其他类中添加更改

statusMenu.statusItem.title = "24:31"

我预计文本 25:00 将更改为“24:31”,但它看起来像这样。 screenshot

系统创建另一个 NSStatusItem。如何更改在 StatusMenuController 中创建的菜单。

最佳答案

COOPer的评论是正确的。我找到了一个从 Storyboard创建另一个 StatusMenu Controller 的对象。我删除了该对象,然后一切正常。

关于swift - 如何在类外更改 NSStatusItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45653330/

相关文章:

ios - Swift 获取 tableview 数组计数并将其放置在 textview

cocoa - 在 Cocoa 中为 NSMenuItem 设置目标/操作的正确方法?

objective-c - NSTextField 内 NSStatusBar : focus and editable problems

swift - 如何计算每个季度的天数

ios - Swift 3 中的 UILongPressGestureRecognizer

macos - 带有 Grunt 文件监视的 Docker 卷

swift - 如何更改 NSSegmentedControl 按钮的选择颜色

macos - Mac OS X 上没有 Java 源代码

objective-c - 如果 NSStatusItem 有菜单,则检测何时单击它?

ios - 如何在行动期间 swift 停止无限循环? (iOS)