- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask
*)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
{
float progress = (float)((float)totalBytesWritten /(float)totalBytesExpectedToWrite);
self.progressView.progress = progress;
self.progressLabel.text = [NSString stringWithFormat:@"%.2f%%", progress*100];
}
我正在通过iOS 7中添加的NSURLSession下载文件。到目前为止一切正常,但由于某种原因,用户界面不会更新。我已经检查过该方法正在调用,我也可以NSLog进度。
也许是因为这种方法经常被调用?但是,如何更新您的用户界面,例如如果你有进度条呢?在此先感谢:)
答案 0 :(得分:8)
NSURLSession默认在后台线程中运行,因此您需要在主线程上调用UI更新。
dispatch_async(dispatch_get_main_queue(), ^{
// perform on main
float progress = (float)((float)totalBytesWritten /(float)totalBytesExpectedToWrite);
self.progressView.progress = progress;
self.progressLabel.text = [NSString stringWithFormat:@"%.2f%%", progress*100];
});
答案 1 :(得分:0)