Как мне обновить индикатор выполнения, используя NSProgress, используя привязки Какао?

Я пытался использовать новый класс NSProgress, чтобы сообщить о ходе выполнения операции в моем приложении Mac. Прямо сейчас он сохраняется как свойство в моем делегате приложения (и обновляется из другого класса и другой очереди) и, кажется, корректно обновляется, что подтверждается журналированием. [_currentProgress fractionCompleted],

Однако мои проблемы возникают, когда я пытаюсь обновить индикатор выполнения с помощью объекта NSProgress. У меня есть индикатор выполнения с привязками примерно так:

Обязательный скриншот

Кажется, что индикатор выполнения остается на том, чем является мой нулевой заполнитель (как доказано изменением нулевого заполнителя на "1"), а не перерисовывается или обновляется, чтобы приспособиться к любому дальнейшему прогрессу. currentProgress устанавливается только после начала операции, и поэтому индикатор выполнения сначала использует нулевой заполнитель, но не предпринимает никаких усилий для обновления индикатора выполнения, когда объект NSProgress установлен в это свойство.

Было бы здорово, если бы кто-то мог помочь мне здесь... (Должно быть, что-то глупое, я делаю неправильно!)

2 ответа

Если вы не скажете иначе, я собираюсь предположить, что вы используете неопределенный индикатор выполнения.

Какао NSProgressIndicator может быть неопределенным, и в этом случае это стиль парикмахерской, который либо движется, либо нет:

Изображение неопределенного индикатора выполнения

Или они могут быть детерминированными, и в этом случае это типичный индикатор выполнения слева направо:

Изображение определенного индикатора выполнения

Попробуйте снять флажок неопределенный и посмотреть, будет ли ваш прогресс отображаться с использованием этих настроек:

Панель настроек индикатора выполнения

Я думаю, что проблема в том, что вы не можете использовать привязки для fractionCompleted если используемый NSProgress обновляется в фоновой очереди. Я сам сейчас внедряю эту комбинацию, и у меня не появляется панель, появляющаяся через обычные привязки, подобные вам. Если я наблюдаю за KVO-наблюдением и установкой doubleValue бара, это работает... пока я отправляю это в основную очередь.

Другие вопросы по тегам