SDWebImage и UITableViewCell

Я работаю с 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..

Спасибо!


person Moe    schedule 10.06.2011    source источник


Ответы (1)


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

ОП написал:

Итак, я нашел проблему.

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

Обратите внимание, как я добавляю изображение в 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, который инициализируется с ImageView, и я получаю от SDWebImage до setImage для этого свойства!

Я надеюсь, что это поможет кому-то!

person Community    schedule 27.01.2015