我环顾四周寻找答案,但尚未找到一个有效的答案。我想要做的就是能够更改我选择的UITableView行的背景颜色或图像。
我习惯于在选择行时转换视图,但这次我希望能够更改行的属性。我知道要使用indexPath.row更改哪一行,但我不知道如何更改行的外观,因为已经调用了cellForRowAtIndexPath方法!
我该怎么做才能改变颜色?
答案 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];
我建议使用此方法,因为可能会有导致表刷新的事件,您可能不想丢失背景颜色。如果您只是直接在选择上设置单元格,就可能发生这种情况。