我使用asihttprequest下载多个文件,我想知道如何在下载完成时使用正确的请求删除关联的UIProgressview。
NSMutableArray *contentArray
包含ASIHTTPRequest
,NSMutableArray *progArray
包含我的自定义UIProgressview。
-(void)addDownload:(NSString *)theURL withName:(NSString *)fileName
{
theProgress = [[PDColoredProgressView alloc] initWithFrame:CGRectMake(3, 17, 314, 14)];
//...
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:theURL]];
//..
[request setDelegate:self];
[request setDownloadProgressDelegate:theProgress];
request.allowResumeForFileDownloads = YES;
[request startAsynchronous];
[request setShouldContinueWhenAppEntersBackground:YES];
[contentArray addObject:request];
[progArray addObject:theProgress];
[theProgress retain];
[self.tableView reloadData];
}
- (void)requestFinished:(ASIHTTPRequest *)request{
[contentArray removeObject:request];
[progArray removeObject:theProgress];
NSLog(@"%@",progArray);
NSLog(@"%@",contentArray);
[self reloadMyData];
[self.tableView reloadData];
}
问题在于,即使contentArray
中有3次下载而第二次完成,此代码也会删除最后一次进度视图。
你能帮帮我吗?
答案 0 :(得分:2)
如果您需要删除与已完成请求相关联的进度视图,您可以从请求的downloadProgressDelegate
属性中获取该视图:
- (void)requestFinished:(ASIHTTPRequest *)request{
PDColoredProgressView *progress = (PDColoredProgressView*)request.downloadProgressDelegate;
[contentArray removeObject:request];
if (progress)
[progArray removeObject:progress];
[self reloadMyData];
[self.tableView reloadData];
}