表视图iphone中的单元重用问题

时间:2013-09-12 18:49:22

标签: iphone objective-c tableview

我知道这是一个重复的问题,但我没有得到解决这个问题的方法。

我正在使用tableview,我想根据webservice的某些状态更改一个textlabel的颜色。

但问题是当桌面视图向上和向下滚动时,每个文本标签颜色都在变化。这是我的代码。

- (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条件被评论时它工作正常。但我知道这不是确切的方法。

任何人都可以帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您正在重复使用单元格,则该单元格(及其所有属性)与之前的相同。

所以,你的代码

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

将在该条件下将文本设置为红色。如果条件为假,则不更改文本颜色。 但是,如果之前颜色变为红色,则仍为红色。只需添加代码即可在其他条件下将其设置为适当的颜色。

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