我读到这是因为dequeueReusableCellWithIdentifier方法抓住了一个oldCell,如果有一个可用而不是创建一个新的,如果我有特殊的视图要显示,比如图像或复选标记,我想明确说,show =单元格的YES或show = NO,因此单元格最终不会使用带有旧图形的单元格,最终得到的图像我不希望在我的视图中显示。
所以在这种情况下,我在弹出窗口中有一个UITableView。这是一个分组表。根据数据,这些组有2-4个单元。我正在使用UITableViewCellStyleValue2,就像联系人应用程序一样。我想根据数据在组中第一个单元格的单元格右侧添加图像。然而,一旦我滚动表格,它就会选择一个出列的单元格,然后我会在右侧获得一个图像,这个图像甚至不是第一个单元格。我没有创建一个UITableViewCell子类,我不确定是否需要添加这一点,所以我可以控制我正在添加到单元格的imageView。
所以这是cellForRowAtIndexPath方法的重要部分:
if (row == 0) {
UIImage *dot;
if (aTarget.importance == TargetImportanceHigh) {
dot = [UIImage imageNamed:@"dot_red.png"];
}
else if (aTarget.importance == TargetImportanceLow) {
dot = [UIImage imageNamed:@"dot_yellow.png"];
}
else {
dot = [UIImage imageNamed:@"dot_black.png"];
}
UIImageView *imgView = [[UIImageView alloc] initWithImage:dot];
imgView.frame = CGRectMake(cell.frame.size.width - 50, cell.frame.size.height / 2 - 7.5, 15, 15);
[cell.contentView addSubview:imgView];
[imgView release];
cell.textLabel.text = @"Location
cell.detailTextLabel.text = [NSString stringWithFormat:@"%i", aTarget.location];
}
else if (row == 1) {
cell.textLabel.text = @"Coordinate";
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", aTarget.coordinate];
}
return cell;
答案 0 :(得分:1)
您应该通过UITableViewCell
子类执行此操作,然后您可以清除UIImageView
中的第二个prepareForReuse
e.g。
@implementation MyTableViewCellSubclass
// other methods
// ...
- (void)prepareForReuse {
[super prepareForReuse];
self.otherImageView.image = nil;
}
@end