特定于1个tableViewCell项目的颜色更改每10个项目复制一次

时间:2013-12-14 19:37:54

标签: ios uitableview

我希望tableView的第一项与列表的其他部分颜色不同。

所以我:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
{

    static NSString *CellIdentifier = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.textLabel.text = [_content objectAtIndex:indexPath.row];

    if (indexPath.row==0){
        cell.textLabel.textColor = [UIColor colorWithRed:0 green:0 blue:0.6 alpha:1];
    }
        return cell;
}
  • 发生了奇怪的现象。列表后面的10个项目,该项目也改变了颜色。认为它可能是“0”反复出现。所以我试过了:

    if([cell.textLabel.text isEqualToString:@“我的第一个项目的标题”]){         cell.textLabel.textColor = [UIColor colorWithRed:0 green:0 blue:0.6 alpha:1];     }

  • 好吧,10件事之后,仍在改变该项目的颜色。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

UITableView不会为每一行分配新的单元格。相反,为了节省内存,可以调用dequeueReusableCellWithIdentifier:,它可以获取先前已分配的单元格。我怀疑发生的是你的屏幕可以容纳10个单元格,所以当你的第一个单元格滚出屏幕时,它会被重用于单元格11,但它的文本颜色保持不变。要解决此问题,只需在颜色分配中添加else语句即可。

if (indexPath.row==0){
    cell.textLabel.textColor = [UIColor colorWithRed:0 green:0 blue:0.6 alpha:1];
}
else {
    cell.textLabel.textColor = [UIColor someOtherColor];
}

这样,当第一个单元格被重用时,它的颜色将被重置。