Swift:单击时刷新菜单栏

时间:2014-11-30 15:37:09

标签: macos swift statusbar

我正在为Mac OS X制作状态栏应用程序但是我只想在单击状态栏项目时刷新它。

这是我的代码:

class AppDelegate: NSObject, NSApplicationDelegate {
    @IBOutlet weak var window: NSWindow!
    @IBOutlet var menu: NSMenu!


    var statusItem: NSStatusItem!;

    @IBAction func quit(sender: AnyObject) {
        NSApplication.sharedApplication().terminate(nil)
    }

    func Refresh(){
        NSLog("Refresh")
    }

    func applicationDidFinishLaunching(aNotification: NSNotification?) {
        statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)
        statusItem.title = "Battery Infomation"
        statusItem.menu = self.menu
        statusItem.highlightMode = true
    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }


}

如果任何人可以帮助我这样做,那将是值得赞赏的。

1 个答案:

答案 0 :(得分:4)

您要找的是validateMenuItem:。它是一个检查菜单是应该启用还是禁用的地方。因此,它会在每次菜单出现之前调用。您可以使用它来更新标题以反映电池状态。

override func validateMenuItem(menuItem: NSMenuItem) -> Bool {
    if(menuItem.action == Selector("batteryStatus:")) {
        NSLog("refresh!");
        let now = NSDate()
        menuItem.title = String(format:"%f", now.timeIntervalSince1970);
        return true;
    }
    return true;
}

@IBAction func batteryStatus(sender: NSObject) {

}