1

我正在使用 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 上的示例代码..

谢谢!

4

1 回答 1

0

(由 OP 在问题编辑中回答。作为社区 wiki 答案移至此处。请参阅没有答案的问题,但问题已在评论中解决(或在聊天中扩展)

OP写道:

好的,所以我发现了问题。

对于其他有同样问题的人,这就是你做错的地方!

请注意我在创建单元格时如何将图像添加到子视图中:

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 带有 aImageView并且我可以SDWebImage使用setImage该属性!

我希望这可以帮助别人!

于 2015-01-27T09:42:35.203 回答