我创建了一个自定义UITableViewCell
类,用于显示我连接的多个图像,并使用界面构建器xib构建元素。我确保尺寸检查器中的imageView尺寸与我想要显示的png尺寸相匹配。这是我自定义单元格的头文件
@interface MultipleImageCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *name;
@property (nonatomic, weak) IBOutlet UIImageView *type;
@property (nonatomic, weak) IBOutlet UIImageView *sold;
@property (nonatomic, weak) IBOutlet UIImageView *avatar;
@end
我没有更改单元格实现文件中的任何内容,它是自动生成的。在我的表视图控制器类中,对于cellForRowAtIndexPath
,我注册了Nib并设置了新的单元格类型并使用dequeueReusableCellWithIdentifier
设置了正确的标识符。然后我尝试使用一些switch语句修改自定义单元格的属性。这会导致模拟器中的单元格加载不一致。如果我关闭模拟器,再次启动它们看起来没问题,但是一旦我开始操作它们,一些图像会显示,一些不显示,或者显示错误的图像。
这是我cellForRowAtIndexPath
//set the type for every cell
[cell.type setImage:[UIImage imageNamed:type]];
if (sold) {
//put in sold icon
[cell.sold setImage:[UIImage imageNamed:@"sold"]];
if (self.user isEqualToString:originalSender]) {
cell.name.text = sender;
return cell;
} else {
//anonymous posting
cell.name.text = nil;
[cell.avatar setImage:[UIImage imageNamed:@"man"]];
return cell;
}
}
//default cell
cell.name.text = nil;
cell.avatar.image = [UIImage imageNamed:@"man"];
return cell;
}
答案 0 :(得分:3)
在设置CustomeCell的所有属性之前,您将返回单元格。
[cell.type setImage:[UIImage imageNamed:type]];
//default cell
cell.name.text = nil;
cell.avatar.image = [UIImage imageNamed:@"man"];
if (sold) {
//put in sold icon
[cell.sold setImage:[UIImage imageNamed:@"sold"]];
if (self.user isEqualToString:originalSender]) {
cell.name.text = sender;
cell.avatar.image = [UIImage imageNamed:senderImage];
//I assume you have image for sender.
}
}
return cell;
答案 1 :(得分:0)
当系统回收你的细胞时,旧细胞仍然有它们的图像。
在准备要重复使用的单元格时尝试清除图像视图。在UITableViewCell子类中实现以下内容。
- (void)prepareForReuse;
{
self.avatar.image = nil;
self.type.image = nil;
self.sold.image = nil;
}