0

これが繰り返される質問であることは知っていますが、この問題の解決策が得られません。

ステータスフォームのWebサービスに従って、1つのテキストラベルの色を変更したいテーブルビューを使用しています。

しかし、問題は、テーブル ビューを上下にスクロールすると、すべてのテキスト ラベルの色が変化することです。これが私のコードです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...
cell.textLabel.text = [[self.Contents objectAtIndex:indexPath.row]event];
   if([[[self.Contents objectAtIndex:indexPath.row]status] isEqualToString:@"Failed"]){
        cell.textLabel.textColor = [UIColor redColor];
    }

   [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    return cell;
}

条件がコメントされている場合、cell ==nil正常に機能していますが、これが正確な方法ではないことはわかっています。

誰でもこれで私を助けてくれませんか。前もって感謝します。

4

1 に答える 1

2

セルを再利用している場合、そのセル (およびそのすべてのプロパティ) は以前と同じです。

だから、あなたのコード

if([[[self.Contents objectAtIndex:indexPath.row]status] isEqualToString:@"Failed"])
{
    cell.textLabel.textColor = [UIColor redColor];
}

その状態でテキストを赤に設定します。条件が false の場合、テキストの色は変更されません。ただし、以前に色が赤に変更された場合は、赤のままです。コードを追加して、他の条件で適切な色に設定するだけです。

if([[[self.Contents objectAtIndex:indexPath.row]status] isEqualToString:@"Failed"])
{
    cell.textLabel.textColor = [UIColor redColor];
}
else
{
    cell.textLabel.textColor = [UIColor blackColor];
}
于 2013-09-12T18:53:16.003 に答える