私はiPhoneプログラミングの初心者です。UITableView に画像を読み込みたい。私の画像はウェブから来ました。ASIHttp Request
画像を使用してから UITableview にロードする必要があることはわかっています。しかし、それを行うと、画像をロードするまで UITableview がハングします。非同期の画像読み込みブロックを使用する場合、リクエストメイドをいつでも再利用するたびにCell==nil
、それはしたくありません。
Tableview で使用している次のコード行cellForRowAtIndexpath
。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIImageView *imgViewCellBg;
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.accessoryType=UITableViewCellAccessoryNone;
imgViewCellBg = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,151)];
imgViewCellBg.userInteractionEnabled = NO;
imgViewCellBg.backgroundColor = [UIColor whiteColor];
imgViewCellBg.tag = 10000;
[cell.contentView addSubview:imgViewCellBg];
[imgViewCellBg release];
}
else{
imgViewCellBg = (UIImageView *)[cell.contentView viewWithTag:10000];
}
//-------------------------------- For the image Downloding And Displaying ------
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:(MY Url)]];
[request setCompletionBlock:^{
// NSLog(@"Image downloaded.");
NSData *data = [request responseData];
UIImage *imageCountry = [[UIImage alloc] initWithData:data];
[imgViewCellBg setImage:imageCountry];
imageCountry = Nil;
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"Error downloading image: %@", error.localizedDescription);
}];
[request startAsynchronous];
//-----------------------------------------------------------------
return cell;