【发布时间】:2010-03-26 03:47:43
【问题描述】:
我正在使用此代码:
NSURLConnection *oConnection=[[NSURLConnection alloc] initWithRequest:oRequest delegate:self];
下载文件,我想更新我加载的子视图上的进度条。为此,我使用以下代码:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[oReceivedData appendData:data];
float n = oReceivedData.length;
float d = self.iTotalSize;
NSNumber *oNum = [NSNumber numberWithFloat:n/d];
self.oDPVC.oProgress.progress = [oNum floatValue];
}
子视图为oDPVC,其上的进度条为oProgress。设置进度属性不会更新控件。
根据我在网上阅读的内容,很多人都想这样做,但没有一个完整、可靠的样本。此外,还有很多相互矛盾的建议。有些人认为您不需要单独的线程。有人说您需要一个后台线程来进行进度更新。有人说不行,在后台做其他事情,在主线程上更新进度。
我已经尝试了所有的建议,但没有一个对我有用。
还有一件事,也许这是一个线索。我在 applicationDidFinishLaunching 期间使用此代码加载子视图:
self.oDPVC = [[DownloadProgressViewController alloc] initWithNibName:@"DownloadProgressViewController" bundle:nil];
[window addSubview:self.oDPVC.view];
在 XIB 文件(我在 Interface Builder 和文本编辑器中检查过)中,进度条是 280 像素宽。但是当视图打开时,它已经以某种方式调整到可能是该宽度的一半。此外,视图的背景图像是 default.png。它没有出现在默认图像的正上方,而是向上推了大约 10 个像素,在屏幕底部留下一个白条。
也许这是一个单独的问题,也许不是。
【问题讨论】:
标签: iphone cocoa-touch download nsurlconnection uiprogressview