2017-03-01 76 views
0

我有一个tableview的问题。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时,删除的图像是在现有的轨道上。我知道有更有效的方式来做到这一点,但我尝试过,我最终在这里。

此外,我还记录了这种方法,即使没有日志,它也会删除已删除的图像。

回答

0

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

这听起来像重用的单元格仍然有一个对该删除图像的引用。

这不是很清楚,你添加该图像的观点,但我建议你移动代码到自定义类的表格视图单元格(或创建一个,如果不存在的话)。随后在prepareForReuse中,确保图像视图已被删除或隐藏。

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

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

(请原谅Objective-C的语法错误!我一直在使用雨燕有一段时间了。)

相关问题