インターネットからZIPファイルをダウンロードできます。後処理はconnectionDidFinishLoadingで実行され、UIView要素が更新されないことを除いて正常に機能します。たとえば、statusUpdate.text = @ "Uncompressing file"を設定しましたが、その変更は、connectionDidFinishLoadingが完了するまで表示されません。同様に、UIProgressViewオブジェクトとUIActivityIndicatorViewオブジェクトは、このメソッドが終了するまで更新されません。
このメソッド内からUIViewの更新を強制する方法はありますか?[self.view setNeedsDisplay]を設定しようとしましたが、うまくいきませんでした。メインスレッドで実行されているようです。ここにある他のすべてのコマンドは問題なく機能します。唯一の問題はUIの更新です。
ありがとう!
更新: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を設定します。これはエラーなしでビルドおよび実行され、processUpdateが完了するまでUIVIEWで何も更新されないことを除いて、意図したとおりに機能します。その後、すべてが一度に更新されます。
これまでのご協力に感謝します!