NSProgressIndicator в NSMenuItem не обновляется на втором дисплее

у меня естьNSMenu прикреплен кNSStatusItem (приложение строки меню). При загрузке файла я хочу отобразить NSProgressIndicator в пункте этого меню. Я создалNSViewController подкласс для этого индикатора прогресса со следующими свойствами:

@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 ом и на пользовательском представлении, и на индикаторе прогресса, когда я изменяю значения, но это не работает. Единственное, что исправляет индикатор прогресса - это[progress setHidden:YES]; [progress setHidden:NO]; в быстрой последовательности, но это вызывает мерцание индикатора прогресса и, конечно, является плохим решением.

Что я делаю неправильно? Как я могу это исправитьNSProgressIndicator?

Ответы на вопрос(1)

Ваш ответ на вопрос