为什么我的图像会在表格视图中一次又一次地加载?

时间:2015-01-30 17:11:41

标签: ios objective-c uitableview

我正在创建一个应用程序来显示列表,每个列表都有一定数量的x图像显示在表格单元格中。

要显示图像,我必须动态创建UIImageView并通过for循环将图像加载到单元格中(取决于从服务器调用接收的数据)。

现在,我可以动态添加图像,但是当我滚动表格视图时,cellForRowAtIndexPath函数再次运行,图像再次加载到单元格中,因此创建的图像视图比实际数据更多

我希望在单元格中保持图像计数不变,并且不希望在表格滚动时在单元格中创建更多图像。

这是功能代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *Cellidentifier1 = @"ClassCell";

    ClassCell *cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifier1 forIndexPath:indexPath];

    // Configure the cell...
    long row = [indexPath row];

    for (int t = 0; t<individualSports.count; t++) {
        UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake((250/10*count+10), 125, 20, 20)];
        [imageView setImage:[UIImage imageNamed:@"cricket_unselected.png"]];
        [cell addSubview:imageView];
    }

    return cell;
}

1 个答案:

答案 0 :(得分:0)

您的ClassCell可以为您处理此问题。如果它用于其他目的,只需再次将其子类化;

@implementation ClassCell // or a new ClassCell subclass
- (id)initWithFrame:(CGRect)frame {
  if (self = [super initWithFrame:frame]) {
    // for loop..
  }
  return self;
}
@end

或者,您可以使用BOOL

@interface ClassCell
@property BOOL hasImageViews;
@end

然后:

if (!cell.hasImageViews) {
  cell.hasImageViews = YES;
  // for loop..
}

旁注:我不确定为什么要将相同的图片多次添加到单个单元格中;您是否更有可能想要使用某种复选框?此外,您正在使用t进行迭代,但随后使用count应用框架,这意味着您的所有图片视图都相互重叠,因为它们在{{1}内具有相同的框架}}