setProgress больше не обновляет UIProgressView, начиная с iOS 5

У меня возникли небольшие проблемы с индикатором выполнения с момента выхода iOS 5. Приведенный ниже код работал нормально до iOS 5, но с iOS 5 индикатор выполнения больше не отображает новый прогресс, установленный в цикле.

Предполагается, что код будет работать следующим образом:

  1. Создать индикатор выполнения (работает)
  2. В новом фоновом процессе: установить начальный прогресс 0,25 (работает)
  3. В том же фоновом процессе: Обновить прогресс во время прохождения цикла (работал в iOS 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, которые могли бы его нарушить?

9
задан favo 10 January 2012 в 12:22
поделиться