我知道这是一个重复的问题,但我没有得到解决这个问题的方法。
我正在使用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
条件被评论时它工作正常。但我知道这不是确切的方法。
任何人都可以帮助我。 提前谢谢。
答案 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];
}