tableview 更新错误索引路径的单元格
Posted
技术标签:
【中文标题】tableview 更新错误索引路径的单元格【英文标题】:tableview update cells at wrong indexpath 【发布时间】:2017-03-01 08:40:53 【问题描述】:我的 tableview 有问题。
我有一个音轨列表,如果该音轨确实存在,我会检查每个音轨。如果没有,我会在单元格图像视图中的艺术品上设置一个已删除的图像。
//SET DELETED IMAGE IF TRACK NOT EXISTS
if (!trackExists && cell.trackImageView.subviews.count < 1)
UIImageView *deletedImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 60, 60)];
deletedImageView.image = [self resizeImageWithImage:[UIImage imageNamed:@"cellDeletedImage"] scaledToSize:CGSizeMake(60, 60)];
[cell.trackImageView addSubview:deletedImageView];
有时当我重新加载 tableview 时,删除的图像在现有轨道上。我知道有更有效的方法可以做到这一点,但我尝试了又尝试,最终我来到了这里。
我也记录了这个方法,即使没有日志,它也会放置已删除的图像。
【问题讨论】:
【参考方案1】:如果您按照设计使用表格视图,那么您可能会重复使用单元格。当您上下滚动表格几次时也会发生这种情况吗?如果再次滚动,是否有一个已删除图像的单元格突然没有了?
听起来重用的单元格仍然引用了那个已删除的图像。
不清楚您在哪里添加该图像视图,但我建议您将该代码移动到您的表格视图单元格的自定义类中(如果不存在,则创建一个)。随后在prepareForReuse
中,确保图像视图被移除或隐藏。
@class TrackTableViewCell : UITableViewCell
- (void) prepareForReuse
//Remove / hide image view
- (void) setAsDeleted
//Add / show image view
(原谅 Objective-c 的语法错误!我已经使用 Swift 有一段时间了。)
【讨论】:
以上是关于tableview 更新错误索引路径的单元格的主要内容,如果未能解决你的问题,请参考以下文章