私のコードは、initWithURL で IntentImage を初期化し、downloadImage を呼び出すことにより、メソッドでInternetImageを使用して画像を非同期的にダウンロードします。tableview: cellForRowAtIndexPath:
このコードは、UITableView の新しいセル UITableViewCell まで下にスクロールした後は完全に実行されますが、どちらの場合も URL が正しいにもかかわらず、前には実行されません。InternetImage の NSURLConnection デリゲート メソッドは、接続の成功または失敗を通知するために呼び出されることはありません。reloadData:
イメージのダウンロードに失敗したため、 、setNeedsDisplay:
、および を呼び出しsetNeedsLayout:
て何もしません。
UiTableViewController のサブクラスのコードは次のとおりです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
Object *object = (Object *)[self.array objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"] autorelease];
}
cell.textLabel.text = object.attribute;
if (object.image == nil && object != nil) {
NSString *URLString = [[MyAppDelegate imageURLFromLink:(object.link) withExtension:@".jpg"]absoluteString];
InternetImage *asynchImage = [[InternetImage alloc] initWithUrl:URLString object:object];
[asynchImage downloadImage:self];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if (object.image != nil && object.thumbnailImage == nil) {
UIImage *image= (UIImage *) object.image;
UIImage *thumbnail = [image _imageScaledToSize:CGSizeMake(75.0, 50.0) interpolationQuality:20];
object.thumbnailImage = thumbnail;
}
cell.imageView.image = object.thumbnailImage;
return cell;
}