下部で更新
このために、MKNetworkKitFlickrデモから分岐しました。テーブルに表示したいWebサーバー上にいくつかの画像があります。UITableViewCellサブクラスImageCellがあります。
リモート画像を取得するためのカスタムメソッドは次のとおりです。
-(void)setImageForCell:(NSString *)remoteFileName {
self.loadingImageURLString =
[NSString stringWithFormat:@"http://myserver.com/%@.png",remoteFileName];
self.imageLoadingOperation = [ApplicationDelegate.imageDownloader imageAtURL:[NSURL URLWithString:self.loadingImageURLString]
onCompletion:^(UIImage *fetchedImage, NSURL *url, BOOL isInCache) {
if([self.loadingImageURLString isEqualToString:[url absoluteString]]) {
if (isInCache) {
self.imageView.image = fetchedImage;
[self.contentView drawRect:self.contentView.frame];
NSLog(@"Image is in cache");
} else {
self.imageView.image = fetchedImage;
[self.contentView drawRect:self.contentView.frame];
NSLog(@"Image is not in cache");
}
}
}];
}
//TableView.h
//it is called like this
//in cellForRowAtIndexPath...
ImageCell *cell = (ImageCell *)[tableView dequeue...etc];
MyObject *obj = [dataSource objectAtIndex:indexPath.row];
cell.textLabel.text = obj.name;
[cell setImageForCell:obj.name];
return cell;
デフォルトのキャッシュディレクトリの内容を調べたところ、中にアイテムがあります。テーブルを常にスクロールすると、「画像はキャッシュにあります」と表示されるようになりました。問題は、セルのimageViewが更新されないことです。Mugunthには自動的にクラスメソッドNotizesObserversForKeyがあります:しかし、私はそれがどこにも実装されているのを見たことがありません。その行を新しいコンテンツで更新するようにtableViewインスタンスに指示するための別の手順が含まれていると思います。
ご入力いただきありがとうございます。
アップデート
CellとUIImageViewIBOutletを備えたカスタムInterfaceBuilderxibファイルを使用してこれを機能させました。なぜself.imageView.imageで機能しなかったのかわからないので、その理由を正確に調べたいと思います。標準のUITableViewCellクラスを使用したいので、これは未解決の質問だと思います。