SDWebImage 和 UITableViewCell
Posted
技术标签:
【中文标题】SDWebImage 和 UITableViewCell【英文标题】:SDWebImage and UITableViewCell 【发布时间】:2011-06-10 12:55:22 【问题描述】:我正在使用 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】:(由 OP 在问题编辑中回答。作为社区 wiki 答案移至此处。请参阅 Question with no answers, but issue solved in the comments (or extended in chat))
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 带有ImageView
,然后我在该属性上得到SDWebImage
到setImage
!我希望这对某人有帮助!
【讨论】:
以上是关于SDWebImage 和 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章