tableview更新错误索引路径

时间:2017-03-01 08:40:54

标签: tableview xcode8 indexpath

我遇到了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 个答案:

答案 0 :(得分:0)

如果您正在使用表格视图,那么您可能正在重复使用单元格。当你上下滚动表几次时会发生这种情况吗?如果再次滚动,是否有一个已删除图像的单元格突然没有它?

听起来重用的单元格仍然可以引用该已删除的图像。

您在添加该图片视图的位置并不十分清楚,但我建议您将该代码移动到表格视图单元格的自定义类(或者如果它不存在则创建一个)。随后在prepareForReuse中,确保删除或隐藏图像视图。

@class TrackTableViewCell : UITableViewCell 
{
    - (void) prepareForReuse 
    {
         //Remove / hide image view
    }

    - (void) setAsDeleted 
    {
        //Add / show image view
    }
} 

(原谅objective-c语法错误!我一直在使用Swift一段时间。)