我已將NSMenu
連接到NSStatusItem
(菜單欄應用程序)。在下載文件時,我想在此菜單的項目中顯示NSProgressIndicator。我創建了一個NSViewController
子類具有以下屬性此進度指示器:NSMenuItem中的NSProgressIndicator未在第二臺顯示器上更新
@property NSUInteger current; // Bound to NSProgressIndicator value
@property NSString *status; // Bound to a NSTextField value
@property NSUInteger total; // Bound to NSProgressIndicator max value
當需要時,我開始用下面的代碼文件,它運行在NSRunLoopCommonModes
使委託方法也被稱爲時的下載所述NSMenu
顯示(在NSEventTrackingRunLoopMode
運行):
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
[connection start];
在didReceiveData
委託方法我然後設置在我NSViewController
子類的屬性:
progressViewController.current = receivedData.length;
progressViewController.status = @"Downloading...";
progressViewController.total = expectedBytes;
,如果我綁定屬性標籤這個偉大的工程,但只有NSProgressIndicator
更新,如果我打開菜單之前的連接開始,再次直至下載完成後不要關閉它。但是如果我以後打開它,進度指示器不會更新。它顯示了我打開菜單時屬性的值,但此值不會更新。進度指示器也不動畫。注意標籤做工作...
我試圖手動調用setNeedsDisplay
與YES
,並呼籲display
OM上的自定義視圖和進度指示器既當我改變的值,但不起作用。修復進度指示器的唯一方法是快速連續調用[progress setHidden:YES]; [progress setHidden:NO];
,但這會導致進度指示器閃爍,當然這是一個不好的解決方案。
我在做什麼錯?我該如何解決這個問題NSProgressIndicator
?
喜蛙,我面臨着類似的問題。我在NSMenuItem中有一個NSProgressIndicator。當我第一次打開它而不是第二次時它是動畫。你有沒有找到解決你的問題的辦法? – Jasper
我從來沒有能夠解決這個確切的問題,但是當你將'NSProgressIndicator'放入'NSTableView'時,這個錯誤不會發生。因爲無論如何我需要一個指標列表,這對我來說不成問題。我仍然不知道如何解決這個確切的問題,但...可能是另一個錯誤,在'NSMenuItem'中查看... – Frog
感謝您的更新,我會嘗試 – Jasper