Я могу загрузить ZIP-файл из Интернета. Последовательная обработка выполняется в connectionDidFinishLoading и работает нормально, за исключением того, что элементы UIView не обновляются. Например, я устанавливаю statusUpdate.text = @ «Uncompressing file», но это изменение не появляется до тех пор, пока не завершится connectionDidFinishLoading. Аналогично, объекты UIProgressView и UIActivityIndicatorView не обновляются до тех пор, пока этот метод не завершится.connectionDidFinishLoading - как заставить обновить UIView?
Есть ли способ принудительно обновить UIView из этого метода? Я попытался установить [self.view setNeedsDisplay], но это не сработало. Кажется, он работает в основном потоке. Все остальные команды здесь работают очень хорошо - единственная проблема заключается в обновлении пользовательского интерфейса.
Спасибо!
Обновление: Вот код, который НЕ обновляя UIView:
-(void)viewWillAppear:(BOOL)animated {
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(processUpdate:) userInfo:nil repeats:YES];
downloadComplete = NO;
statusText.text = @"";
}
-(void)processUpdate:(NSTimer *)theTimer {
if (! downloadComplete) {
return;
}
[timer invalidate];
statusText.text = @"Processing update file.";
progress.progress = 0.0;
totalFiles = [newFiles count];
for (id fileName in newFiles) {
count++;
progress.progress = (float)count/(float)totalFiles;
// ... process code goes here ...
}
}
В то конец ProcessUpdate, я поставил downloadComplete = YES. Эта сборка & работает без ошибок и работает так, как предполагалось, за исключением ничего обновлений в UIVIEW до тех пор, пока процесс processUpdate не завершится, а затем все будет обновляться сразу.
Спасибо за помощь!
Благодарим за ответы! Я реализовал это, как описано (copy & paste), но он зависает в цикле while() и никогда не вводит его. Я запускаю это на симуляторе. Любые идеи, почему это висит? – waltcrit
У меня было неправильное условие цикла (должно быть должно быть '> 0' вместо' <0'). Я исправил свой ответ; возможно, это что-то не так с вашим кодом? В противном случае мне не хватает информации, чтобы рассказать. – benzado
Это работает, спасибо! – waltcrit