Я использую NSProgressIndicator в своем проекте xcode (Mac OS X, а не iOS). Я пытаюсь выполнить асинхронную загрузку файла, показывая ход загрузки на индикаторе выполнения. В моем проекте нажатие на кнопку обновления запускает загрузку. После каждого получения данных прогресс обновляется и вызывается метод update_progress в делегате приложения.
Как видно из NSLogs, этому методу передается значение прогресса. Использование setDoubleValue для индикатора прогресса с этим значением не имеет никакого эффекта. Однако использование статического значения (например, setDoubleValue:50.0f) действительно обновляет индикатор выполнения.
В .m метод loadData запускает загрузку. Здесь вы можете указать место для сохранения файла (self.strFileNameWithPath), а несколькими строками ниже — место для загрузки файла. Я просто использую файл размером 2,5 МБ, небольшой, но достаточно большой, чтобы выполнить несколько шагов загрузки.
В интерфейсе нажмите кнопку «обновить», чтобы начать загрузку. Консоль будет отображать обновления прогресса по мере получения фрагментов.
Кто-нибудь знает какие-либо причины, почему это происходит, и как я могу это исправить? Заранее спасибо!
Изменить: метод с несоответствием:
- (void)update_progress:(float)value{
double thevalue = (double)value;
NSLog(@"value: %f",thevalue);
[self.progress_indicator setDoubleValue:thevalue];
NSLog(@"Prgoress: %f",[self.progress_indicator doubleValue]);
}
Во время каждого шага выполнения значение показывает правильное значение выполнения, но индикатор выполнения не реагирует на setDoubleValue, так как второй NSLog возвращает 0,0.
Ниже показано, что показывает консоль:
value: 2.770802
Prgoress: 0.000000
value: 22.662386
Prgoress: 0.000000
value: 69.881004
Prgoress: 0.000000