Я реализовал проект LazyTableImages ( ссылка ) от Apple, но в моей версии я использовал RestKit для получения данных, и мой UItableviewcontroller был перенесен в стек навигации.
Так что я отказываюсь от того, что делает яблоко в делегате приложения, чтобы получить xml.Я не думаю, что это проблема.Моя проблема заключается в том, что, когда вы выходите из UITableviewcontroller, используя либо кнопку навигации назад, либо открывая другой элемент панели вкладок и возвращаясь, изображения, которые были загружены туда ранее, отображаются, но сразу же загружается изображение заполнителя.По сути, происходит обратное.
Это похоже на кэшированные данные UITableview, поэтому, когда вы возвращаетесь, это мешает Lazy Table Images.Мне нужно знать, кто-нибудь реализовал этот код, где они должны были отступить?
РЕДАКТИРОВАТЬ:
Похоже, imageDownloader не ноль во второй раз, что препятствует загрузке изображения.Я все еще выясняю, как это обойти.Конечно, я могу просто снять условие, но я не знаю, является ли это «плохим» для производительности.
imageDownloadsInProgress, изменяемый словарь, по-прежнему содержит все свои данные, даже если вы отказываетесь.Теперь это стало другим вопросом, как мне удалить imageDownloadsInProgress, если пользователь наносит ответный удар или отклоняется от текущего представления.
imageDownloadsInProgress сохраняется, но я добавил [релиз imagesDownloadsInProgress] в метод dealloc, однако я не думаю, что он выполняется.
-(void)startEventImageDownload:(WhatsonEvent *)eventRecord forIndexPath:(NSIndexPath *)indexPath
{
EventImageDownloader *imageDownloader = [imageDownloadsInProgress objectForKey:indexPath];
if(imageDownloader == nil)
{
NSLog(@"%@",eventRecord.title);
imageDownloader = [[EventImageDownloader alloc] init];
imageDownloader.eventRecord = eventRecord;
imageDownloader.indexPathInTableView = indexPath;
imageDownloader.delegate = self;
[imageDownloadsInProgress setObject:imageDownloader forKey:indexPath];
[imageDownloader startDownload];
[imageDownloader release];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
}