Мой код загружает изображения асинхронно с использованием InternetImage в методе tableview: cellForRowAtIndexPath:
, инициализируя IntentImage с помощью initWithURL и вызывая downloadImage. Этот код отлично работает после прокрутки до новой ячейки UITableViewCell в UITableView, но не раньше, хотя URL-адрес правильный в обоих случаях. Никто из методов делегирования NSURLConnection InternetImage не вызван, чтобы уведомить меня об успешном или неудачном подключении, как и должно быть. Вызов reloadData:
, setNeedsDisplay:
и setNeedsLayout:
ничего не предпринимают, поскольку изображение не загружается.Почему загрузка изображений в формате UItableViewCell пока не прокручивается?
Вот код из моего подкласса 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;
}
Хм, мне нравится это решение, оно очень тщательное и спасибо за образец кода. Тем не менее, я не обязательно смотрю, как переписать мой способ загрузки изображений, я доволен выполнением текущего способа после прокрутки. Если нет более простого решения, мне, возможно, придется это сделать, но, похоже, очень много работы, чтобы загрузить изображения на первое представление. –