Я пытаюсь использовать NSProgressIndicator (неопределенный) внутри меню строки состояния. Я использую объект NSView в качестве представления для элемента меню, а затем просматривает индикатор выполнения для его отображения. Но всякий раз, когда я пытаюсь вызвать startAnimation: для прогресса ничего не происходит. Когда я пытаюсь сделать то же самое в обычном NSWindow, он работает отлично, только не внутри элемента меню.
Я новичок как в какао, так и в objective-c, поэтому я мог пропустить что-то "очевидное", но я ' Мы довольно долго искали обходной путь, но безуспешно. Я обнаружил, что элементы меню не могут быть обновлены, пока отображаются, и что вместо этого вам нужно использовать окно без рамки. Но мне не удалось подтвердить это в какой-либо документации.
Изменить:
Хорошо, сейчас почти работает. При использовании setUsesThreadedAnimation: и из MenuDelegate в menuWillOpen и создании нового потока. Этот поток запускает локальный метод:
-(void) doWork(NSProgressIndicator*) p{
[p startAnimation:self];
}
При открытии меню будет запускаться индикатор прогресса на случайной (?) Основе. Если я вызываю startAnimation:
напрямую, не проходя через doWork:
(все еще используя новый поток), это никогда не сработает. Разве setUsesThreadedAnimation:
не заставляет индикатор выполнения создавать собственный поток для анимации?