У меня есть небольшая проблема с индикатором выполнения, так как вышел iOS 5. Код ниже работал отлично до iOS 5, но с iOS 5 индикатор выполнения больше не отображает новый прогресс, установленный в цикле.setProgress больше не обновляет UIProgressView с iOS 5
код должен работать так:
- Создать индикатор выполнения (работы)
- В новом фоновом режиме: Установить начальный ход 0,25 (работ)
- В то же фоновый процесс: Обновление прогресса, идя через петлю (работал в прошивке 4)
Вот код для бара INIT:
// create a progress bar
UIProgressView *progressBar = [[UIProgressView alloc] initWithFrame:CGRectMake(coverSizeX*0.25, coverSizeY - 34.0, coverSizeX*0.5, 9.0)];
progressBar.progress = 0.0;
progressBar.progressViewStyle = UIProgressViewStyleBar;
и в другом потоке он устанавливает начальную точку для прогресса в 0,25:
// set an initial progress
[progressBar setProgress: 0.25];
чуть позже он обновляет прогресс в цикле для отображения прогресса загрузки:
// within a for-loop:
NSNumber *counterPercentage;
for (pageDownload = 1; pageDownload < pagesToDownload; pageDownload++) {
counterPercentage = [[NSNumber alloc] initWithFloat: (float)pageDownload/(float)((float)pagesToDownload)];
[progressBar setProgress: [counterPercentage floatValue]];
[progressBar performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:YES];
}
... но прогресс не отображается на экране, индикатор выполнения застревает при начальном задании 0.25, который был установлен.
Были ли какие-либо изменения в выпуске iOS 5, которые могли сломать его?
Спасибо, это сработало! Также спасибо за объяснение немного больше, чем просто предоставление рабочего решения :-) – favo