我有一个包含我自己的UIView子类的原型单元格的表。 UIView子类绘制了一个彩色矩形。颜色由指向包含矩形的RGB值的结构的属性以及进入单元格中的UILabel的一些文本定义。
当桌子首次加载时,彩色矩形都具有正确的颜色,但是当标签始终保持正确时,当我滚动桌面视图时,颜色开始变得混乱。如果我触摸单元格以选择它,矩形将重新获得其预期的颜色。
一些代码:
@implementation EmbColorWell
@synthesize col;
...
- (void)drawRect:(CGRect)rect
{
// Drawing code
UIBezierPath *p;
p=[UIBezierPath bezierPathWithRect:self.bounds];
if(col)
{
[[UIColor colorWithRed:col->R() green:col->G() blue:col->B() alpha:1.0] setFill];
[p fill];
}
[[UIColor blackColor] setStroke];
[p stroke];
}
@end
col是指向C ++结构的指针。
我填写单元格的代码如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier:@"colourcell" forIndexPath:indexPath];
EmbColorWell *colwellview=(EmbColorWell *)[cell.contentView viewWithTag:100];
colwellview.col=colors+indexPath.row;
UILabel *label=(UILabel *)[cell.contentView viewWithTag:101];
label.text=[NSString stringWithCString:colors[indexPath.row].Name() encoding:NSUTF8StringEncoding];
return cell;
}
我觉得这与细胞再利用有关,而UILabel中有一些神奇的东西可以正确处理这个问题并且我没有做到。或者我只是错过了一些非常明显的东西?
答案 0 :(得分:0)
解决。显然,所需要的只是一个
[colwellview setNeedsDisplay];
在cellForRowAtIndexpath中设置属性后。真的很简单。将它合并到EmbColorWell类本身的setter方法中可能更加清晰。