0

我对 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 时,删除的图像在现有轨道上。我知道有更有效的方法可以做到这一点,但我尝试了又尝试,最终我来到了这里。

我也记录了这个方法,即使没有日志,它也会放置已删除的图像。

4

1 回答 1

0

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

听起来重用的单元格仍然引用了那个已删除的图像。

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

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

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

(原谅 Objective-c 的语法错误!我使用 Swift 已经有一段时间了。)

于 2017-03-01T09:06:02.527 回答