Как мне обновить индикатор выполнения, используя NSProgress, используя привязки Какао?
Я пытался использовать новый класс NSProgress, чтобы сообщить о ходе выполнения операции в моем приложении Mac. Прямо сейчас он сохраняется как свойство в моем делегате приложения (и обновляется из другого класса и другой очереди) и, кажется, корректно обновляется, что подтверждается журналированием. [_currentProgress fractionCompleted]
,
Однако мои проблемы возникают, когда я пытаюсь обновить индикатор выполнения с помощью объекта NSProgress. У меня есть индикатор выполнения с привязками примерно так:
Кажется, что индикатор выполнения остается на том, чем является мой нулевой заполнитель (как доказано изменением нулевого заполнителя на "1"), а не перерисовывается или обновляется, чтобы приспособиться к любому дальнейшему прогрессу. currentProgress
устанавливается только после начала операции, и поэтому индикатор выполнения сначала использует нулевой заполнитель, но не предпринимает никаких усилий для обновления индикатора выполнения, когда объект NSProgress установлен в это свойство.
Было бы здорово, если бы кто-то мог помочь мне здесь... (Должно быть, что-то глупое, я делаю неправильно!)
2 ответа
Если вы не скажете иначе, я собираюсь предположить, что вы используете неопределенный индикатор выполнения.
Какао NSProgressIndicator может быть неопределенным, и в этом случае это стиль парикмахерской, который либо движется, либо нет:
Или они могут быть детерминированными, и в этом случае это типичный индикатор выполнения слева направо:
Попробуйте снять флажок неопределенный и посмотреть, будет ли ваш прогресс отображаться с использованием этих настроек:
Я думаю, что проблема в том, что вы не можете использовать привязки для fractionCompleted
если используемый NSProgress обновляется в фоновой очереди. Я сам сейчас внедряю эту комбинацию, и у меня не появляется панель, появляющаяся через обычные привязки, подобные вам. Если я наблюдаю за KVO-наблюдением и установкой doubleValue бара, это работает... пока я отправляю это в основную очередь.