0

カスタム UITableViewCells を使用してアプリを開発しています。私はセルのペン先を 1 つ持っており、セル識別子のみを使用しています。

cellForRowAtIndexPath には、次のようなコードがあります。

_spot.text = [NSString stringWithFormat:@"%d.", [forecastRow.position intValue]];
if([[forecastRow prob1] floatValue] > 0.5){
    _spot.textColor = [UIColor redColor];
}

ここで、_spot は UILabel の UBOutlet です。実際のところ、数字は正しく表示され、色は最初に適切なセルに割り当てられます。しかし、スクロールすると数字は問題ありませんが、テーブル全体で if() を渡さない他のセルの _spot ラベルに赤色がランダムに割り当てられます。

何が起こっていますか?テキストは正しいのに、色が正しくないのはなぜですか? スクロールするときだけこれが台無しになるのはなぜですか? 複雑な条件に基づいて、行のラベルに複数の異なる色を割り当てる必要があるため、解決策は、このような小さなタスク (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 に答える