0

我正在开发一些带有自定义 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 颜色),因为我需要根据复杂的条件为行的标签分配多个不同的颜色。

4

1 回答 1

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)];
}

这将强制对每个请求进行颜色更新。

于 2012-11-19T16:56:05.927 回答