我有一个专门居住在菜单栏上的Mac应用程序。它有一个进度条和一个标签。标签显示正在执行的任务进度的百分比。我想在用户将鼠标指针悬停在进度指示器上时显示更多信息。工具提示不再显示
当我最初设定的提示和悬停时,它显示没有问题。
但是,如果我转过头再次打开菜单应用程序并将鼠标悬停在上方,工具提示不会出现。我无法弄清楚为什么。这是我的代码。
ProgressMenuController.swift
import Cocoa
class ProgressMenuController: NSObject {
@IBOutlet weak var menu: NSMenu!
@IBOutlet weak var progressView: ProgressView!
let menuItem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
var progressMenuItem: NSMenuItem!
override func awakeFromNib() {
menuItem.menu = menu
menuItem.image = NSImage(named: "icon")
progressMenuItem = menu.itemWithTitle("Progress")
progressMenuItem.view = progressView
progressView.update(42)
}
@IBAction func quitClicked(sender: NSMenuItem) {
NSApplication.sharedApplication().terminate(self)
}
}
ProgressView.swift
import Cocoa
class ProgressView: NSView {
@IBOutlet weak var progressIndicator: NSProgressIndicator!
@IBOutlet weak var progressPercentageLabel: NSTextField!
func update(value: Double) {
dispatch_async(dispatch_get_main_queue()) {
self.progressIndicator.doubleValue = value
self.progressIndicator.toolTip = "3 out of 5 files has been copied"
self.progressPercentageLabel.stringValue = "\(value)%"
}
}
}
这与我的实际应用演示应用。所以update()
函数只被调用一次,并且这些值被硬编码。但在我的实际应用程序中,定期跟踪进度,并调用update()
函数来更新值。标签的百分比值和进度指示器的值得到更新,没有问题。这个问题只与工具提示有关。
这是预期的行为还是我错过了什么?