Как удалить связанный UIProgressview с правильным запросом? - PullRequest
1 голос
/ 20 июля 2011

Я использую 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 загрузки, а вторая заканчивается первой.Ты можешь помочь мне с этим ?

1 Ответ

2 голосов
/ 20 июля 2011

Если вам нужно удалить индикатор выполнения, связанный с завершенным запросом, вы можете получить его из свойства downloadProgressDelegate запроса:

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

    PDColoredProgressView *progress = (PDColoredProgressView*)request.downloadProgressDelegate;
    [contentArray removeObject:request]; 
    if (progress)
       [progArray removeObject:progress]; 
    [self reloadMyData]; 
    [self.tableView reloadData]; 
}
...