SDWebImage и UITableViewCell - PullRequest
       2

SDWebImage и UITableViewCell

1 голос
/ 10 июня 2011

Я работаю с SDWebImage и UITableView

- (UITableViewCell *)tableView:(UITableView *)the_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier"];
    NSDictionary *info = [tableData objectAtIndex:indexPath.row];

    UITableViewCell *cell = [the_tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:MyIdentifier] autorelease];
        if(!addImage) [addImage release];
        addImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"placeholder.png"]];
        [addImage setFrame:CGRectMake(7, 10, 50, 50)];
        [cell setIndentationLevel:6];
        [cell.contentView addSubview:addImage];
    }

    if(info !=  NULL) {
        cell.textLabel.text = [info objectForKey:@"title"];
        cell.detailTextLabel.text = [NSString stringWithFormat:@"Version: %@",[info objectForKey:@"version"]];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

        NSString *imageURL = [NSString stringWithFormat:@"%@",[info objectForKey:@"imageURL"]];
        [addImage setImageWithURL:[NSURL URLWithString:imageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];         
    }
    return cell;
}

, который отлично работает для первых 6 результатов (сумма, которая может поместиться при немедленном просмотре)

Но пока я прокручиваю внизПохоже, что в этом списке просто повторно используются изображения из первых 6 ячеек, а в некоторых ячейках изображения меняются в зависимости от их расположения на экране.

Кроме того, если я вызываю reloadData, изображения из предыдущихUITableCells остаются на экране!

Я что-то здесь не так делаю?Я следовал примеру кода на github ..

Спасибо!

1 Ответ

0 голосов
/ 27 января 2015

(Ответ от ОП в редактировании вопроса. Перемещен здесь как ответ вики сообщества. См. Вопрос без ответов, но проблема решена в комментариях (или расширена в чате) )

ОП написал:

ОК, вот я и нашел проблему.

Для тех, у кого есть такая же проблема, вы ошибаетесь!

Обратите внимание, как я добавляю изображение в SubView при создании ячейки:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:MyIdentifier] autorelease];
addImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"placeholder.png"]];
[addImage setFrame:CGRectMake(7, 10, 50, 50)];
[cell.contentView addSubview:addImage];

Хорошо, что SDWebImage пытался сделать постоянно обновлять эту переменную addImage, которая не была свойством моего класса ячеек.

Итак, для решения этой проблемы я создал собственный подкласс UITableViewCell, этот init с ImageView, и я получаю SDWebImage до setImage для этого свойства!

Надеюсь, это кому-нибудь поможет!

...