如何在选择UITableView行时更改其颜色?

时间:2011-02-23 22:36:35

标签: iphone uitableview select background

我环顾四周寻找答案,但尚未找到一个有效的答案。我想要做的就是能够更改我选择的UITableView行的背景颜色或图像。

我习惯于在选择行时转换视图,但这次我希望能够更改行的属性。我知道要使用indexPath.row更改哪一行,但我不知道如何更改行的外观,因为已经调用了cellForRowAtIndexPath方法!

我该怎么做才能改变颜色?

2 个答案:

答案 0 :(得分:6)

你会这样做:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //First you get the cell you want to change
    UITableViewCell* theCell = [tableView cellForRowAtIndexPath:indexPath];

    //Then you change the properties (label, text, color etc..) in your case, the background color
    theCell.contentView.backgroundColor=[UIColor redColor];

    //Deselect the cell so you can see the color change

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

}

请确保在回收单元格时考虑此颜色更改。

如果您需要更多信息,请发表评论。

答案 1 :(得分:4)

将变量设置为活动行:

int activeRow;

构建单元格时,检查它是否为活动行并设置背景颜色

if (indexPath.row == activeRow) {
    cell.setMyBackgroundColor = [UIColor myCoolColor];
} else {
    cell.setMyBackgroundColor = [UIColor normalColor];
}

不要忘记在正常情况下设置背景颜色,因为它们可以重复使用。

在选择时(或适当时),更新该特定单元格:

NSArray *paths = [NSArray arrayWithObject:indexPath];
[self.tableView reloadRowsAtIndexPaths:paths withRowAnimation:YES];

我建议使用此方法,因为可能会有导致表刷新的事件,您可能不想丢失背景颜色。如果您只是直接在选择上设置单元格,就可能发生这种情况。