私は、以下の図のようにiPhoneアプリを作成しようとしています:私は、動的にuiscrollビューに動的にいくつかのimageviewsを追加していUIProgressViewとUIWbView複数のURLのロード
この中。各画像ビューにはUIButtonとUIProgressViewが含まれています。それぞれのURLをクリックすると、異なるurlが必要になり、各urlの読み込みが対応するUIProgressViewに表示されます。私は非同期メソッドを使用しており、複数の進行状況ビューを同時にロードする必要があります。 ここに私が使用したコードがあります。
- (void)startDownload:(id)sender {
UIButton *btn = (UIButton *)sender;
int btnTag = btn.tag;
selectedTag = btn.tag;
for (int x=0; x < [urlArray count]; x++) {
if (btnTag == x) {
NSURL *url = [NSURL URLWithString:[urlArray objectAtIndex:x]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLConnection *theConnection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSLog(@"Expected length: %lld ",response.expectedContentLength);
}];
if (theConnection) {
receivedData = [NSMutableData data];
}else {
NSLog(@"Connection failed");
}
}
}
}
- (void)makeMyProgressMove{
UIImageView *image = (UIImageView *)[mainView viewWithTag:selectedTag];
UIProgressView *currentProgress = (UIProgressView *)[image viewWithTag:selectedTag];
NSLog(@"Prog tag: %d",currentProgress.tag);
if(currentProgress)
{
float actualProgress = (_receivedDataBytes/(float)_totalFileSize);
currentProgress.progress = actualProgress;
} else {
NSLog(@"couldn't get the progress view for the image with tag: %d", selectedTag);
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
_totalFileSize = response.expectedContentLength;
receivedData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
_receivedDataBytes += [data length];
NSLog(@"Receiving data: %2f", _receivedDataBytes/(float)_totalFileSize);
if ((_receivedDataBytes/(float)_totalFileSize) < 1) {
[self performSelectorOnMainThread: @selector(makeMyProgressMove) withObject: NULL waitUntilDone:NO];
}
else if ((_receivedDataBytes/(float)_totalFileSize) == 1){
[self performSelectorOnMainThread: @selector(makeMyProgressMove) withObject: NULL waitUntilDone:NO];
_receivedDataBytes = 0;
_totalFileSize = 0;
}
[receivedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);
}
しかし、それは動作しません。
[WebViewの答えでuiprogress] [1] [1]:http://stackoverflow.com/a/19173341/2314592 – Cristiana214