我正在创建一个应用程序来显示列表,每个列表都有一定数量的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;
}
答案 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}内具有相同的框架}}