UIImageView внутри UITableViewCell не обновляется - PullRequest
1 голос
/ 14 февраля 2009

Я создаю пользовательский 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.

1 Ответ

5 голосов
/ 14 февраля 2009

Ячейки UITableView кэшируются, поэтому изменение ячейки после ее рендеринга не будет иметь никакого эффекта. Попробуйте отправить в таблицу сообщение reloadData после обновления UIImageView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...