Я создаю пользовательский UITableViewCell
для включения UIImageView
и некоторого связанного текста. Я получаю изображения из Интернета, и пока они загружаются, я отображаю временную UIImage
.
Я использую отдельный поток, чтобы получить UIImage
. После загрузки UIImage
я запускаю метод в главном потоке для установки изображения в UIImageView
(получение экземпляра UIImageView
с использованием тегов)
Но что бы я ни делал, изображения не менялись. В ячейках по-прежнему отображаются старые изображения (соответствующие другой строке - из-за повторного использования ячеек), а новые изображения не отображаются. Операторы журнала показывают, что вызывается метод для установки изображения.
Я даже пытался изменить изображение на статическое в willDisplayCell:forRowAtIndexPath:
но даже тогда изображение не меняется.
Редактировать
Я попытался позвонить reloadData
на UITableView
после изменения UIImage
, но UIImage
по-прежнему не меняется.
Вот соответствующий кусок кода
cellForRowAtIndexPath
image = [imagesArray valueForKey:[NSString stringWithFormat:@"%i",indexPath.row]];
if(image == nil){
//display temporary images. When scrolling stops, detach new thread to get images for rows visible
NSString *pth = [[NSBundle mainBundle] pathForResource:@"folder" ofType:@"png"];
image = [UIImage imageWithContentsOfFile:pth];
[imgView setImage:image];
}
else{
[imgView setImage:image];
}
Метод, который вызывается в главном потоке после загрузки образа
-(void)setImageInArray:(NSIndexPath *)indPath{
[filesTable reloadData];
}
В ветке я добавляю объект UIImage
к imagesArray
. Поэтому при следующем вызове метода cellForRowAtIndex
на reloadData
должен отображаться новый UIImage
.