我有一個專門居住在菜單欄上的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()
函數來更新值。標籤的百分比值和進度指示器的值得到更新,沒有問題。這個問題只與工具提示有關。
這是預期的行爲還是我錯過了什麼?