UIProgressView с несколькими асинхронными NSURLConnection в iOs - PullRequest
1 голос
/ 28 марта 2012

Я использую следующий код для асинхронной загрузки файла из URL,

 NSMutableData *responseData = [[NSMutableData alloc] init];
        NSURL *url = [NSURL URLWithString:@"http://www.tuiscos.com/images/trading.png"];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        [NSURLConnection sendAsynchronousRequest:request 
                                           queue:[NSOperationQueue mainQueue] 
                               completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                                   // do something with data
                                   [responseData appendData:data];
                                   myImage8.image = [UIImage imageWithData:data];
                                   NSInteger len = response.expectedContentLength;
                                   NSInteger receiverdBytes = 0;
                                   receiverdBytes = data.length+ receiverdBytes;
                                   float prog = (float)[responseData length]/(float)len;
                                   [progress8 setProgress:prog];
                               }];

в процессе загрузки, я хочу обновить индикатор выполнения, но, используя этот код, я не получаю постепенный прогресс,вместо этого он ожидает завершения загрузки и перехода к максимальному значению.Как я могу сделать постепенный прогресс в стоимости? Может кто-нибудь предоставить пример кода?Для асинхронного метода с методами делегата. Спасибо:)

Ответы [ 2 ]

1 голос
/ 08 июня 2012

Если вы не хотите кодировать все самостоятельно, я бы предложил использовать ASIHTTPRequesst для этой задачи:

http://allseeing -i.com / ASIHTTPRequest / Как в использовании

Это очень просто реализовать, и вы можете выполнять одновременную асинхронную загрузку. Он также предоставляет делегатов для всех нужд, а также для обновления прогресса.

Я использовал его в своих проектах уже почти год и никогда не сожалел об этом.

0 голосов
/ 28 марта 2012

CompletionHandler выполняется по завершении, конечно.Вы должны делегировать для связи.Используйте -initWithRequest: делегат: метод.Вам нужно будет кодировать методы NSURLConnectionDelegate, и вам нужно установить значение progressView -connection: didReceiveData:

Вот документ: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.pdf

...