2011-07-20 6 views
1

私はasihttprequestを使用して複数のファイルをダウンロードしています。ダウンロードが完了したら、関連するUIProgressviewを適切な要求でどのように削除することができますか?正しいリクエストで関連する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件のダウンロードおよび第一、第二1つの仕上がりがあっても最後progressviewを削除することです。 これを手伝ってもらえますか?

答えて

2

あなたが完成し、要求に関連付けられたプログレスビューを削除する必要がある場合は、リクエストのdownloadProgressDelegateプロパティからそれを得ることができます。

- (void)requestFinished:(ASIHTTPRequest *)request{ 

    PDColoredProgressView *progress = (PDColoredProgressView*)request.downloadProgressDelegate; 
    [contentArray removeObject:request]; 
    if (progress) 
     [progArray removeObject:progress]; 
    [self reloadMyData]; 
    [self.tableView reloadData]; 
} 
関連する問題