我正在使用自定义UITableViewCells开发一些应用程序。我有一个用于单元格的笔尖,我只使用一个单元格标识符。
在cellForRowAtIndexPath中我有一些像这样的代码:
_spot.text = [NSString stringWithFormat:@"%d.", [forecastRow.position intValue]];
if([[forecastRow prob1] floatValue] > 0.5){
_spot.textColor = [UIColor redColor];
}
其中_spot是UILabel的UBOutlet。事实是,数字正确显示,颜色首先分配给适当的单元格。但是,当我滚动时,数字保持正常,但红色被随机分配给其他单元格上的_spot标签,而不是遍布整个表格的if()。
发生了什么事?为什么文字是正确的,但不是颜色?为什么这只在滚动时会混乱?我认为解决方案不是使用几个标识符和笔尖来完成这么小的任务(改变UILabel颜色),因为我需要根据复杂的条件为行的标签分配多种不同的颜色。
答案 0 :(得分:3)
看起来您正在使用新单元格的每个请求更新文本,而不是颜色。发生的事情是细胞重复使用会导致细胞在滚动时被重复使用并且没有正确更新颜色。将您的代码更改为:
_spot.text = [NSString stringWithFormat:@"%d.", [forecastRow.position intValue]];
if([[forecastRow prob1] floatValue] > 0.5){
_spot.textColor = [UIColor redColor];
} else
{
_spot.textColor = [UIColor (original color)];
}
这将强制对每个请求进行颜色更新。