在表格视图中为几个单元格添加颜色

时间:2014-01-04 04:22:52

标签: ios objective-c uitableview tableview

我已经在这个网站上查看过这个问题的几十个答案,但我仍然无法让它工作。就像我之前的许多人一样,我希望在表格视图中更改几个单元格中的颜色。我尝试将条件if(indexPath.row == ...)然后将几个单元格的颜色更改为红色,但这总是会导致其他单元格逐渐变为红色,从而更多地滚动。我尝试从以下位置移动此代码:

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

到这里:

- (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath

但这仍然无效。我怎样才能改变细胞的颜色,比如说,5。13和40是红色的?

3 个答案:

答案 0 :(得分:0)

这可能是您的单元格重用中的问题,这就是滚动时颜色发生变化的原因。

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

//Cell creation code goes here, including cell re-usage

    if(indexPath.row % 2 == 0){
        cell.backgroundColor = [UIColor redColor];
    }
    //This else part is IMPORTANT
    else{
        cell.backgroundColor = [UIColor clearColor];
    }
}

您将在UITableView

中更好地了解Cell Reuse

答案 1 :(得分:0)

请尝试使用此方法..

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == 5 | indexPath.row == 13 | indexPath.row == 40)
        cell.backgroundColor = [UIColor redColor];
    else 
        cell.backgroundColor = [UIColor clearColor]; 
}

答案 2 :(得分:0)

如果您有大量的值,您可以接受数组并输入类似

的条件
if([array containsObject:indexPath.row])

否则,最好在willDisplayCell

中的单元格中给出颜色
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.row == 5 | indexPath.row == 13 | indexPath.row == 40)
        cell.backgroundColor = [UIColor redColor];
    else 
        cell.backgroundColor = [UIColor clearColor];
}