我将自定义颜色放入可以根据具体情况改变的表格单元格中。下面的代码可以很好地改变颜色。我不喜欢每次都要reloadData
来显示颜色的事实。有没有更便宜的方法来强制更改单元格颜色?
此处还有其他代码已被删除。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// testing for old selected color
if (checkedIndexPath)
{
// returning old checked cell back to blue
UITableViewCell *uncheckCell = [tableView cellForRowAtIndexPath:checkedIndexPath];
uncheckCell.backgroundColor = [UIColor blueColor];
}
// changing selected cell background color
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor = [UIColor greenColor];
checkedIndexPath = indexPath;
// reloadingtable data
[self.tableVerseView reloadData];
}
答案 0 :(得分:3)
您不需要reloadData方法。那里有reloadRowsAtIndexPaths方法:
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[(MyCellClass *)[self.tableView cellForRowAtIndexPath:indexPath] setBackgroundColor:[UIColor greenColor]];
[self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic];
}
答案 1 :(得分:2)
我认为没有任何其他方法可以重新加载[... reloadData]
以外的所有表格单元格。
你需要按照自己的意愿去做。
编辑:
要更改字体颜色,请使用:
label.textColor=[UIColor redColor];
label.font=[UIFont fontWithName:@"Helvetica-Bold" size:12.0];
答案 2 :(得分:0)
如果想要在某些事件上更改您的细胞的颜色,则不需要reloadData
,您需要的只是知道indexPath
细胞。如果您可以在 环境 上执行此操作,请按以下步骤操作:
使用
按cellForRowAthInedexPath
方法检索单元格
- (UITableViewCell *) retriveCellForIndexPath : (NSIndexPath *) indexPath in : (UITableView *) tableView{
return [tableView cellForRowAtIndexPath:indexPath];
}
现在以您希望的方式更新cell
此外,您可以使用单元格引用更新单元格内的所有UIContent,只需使用单元格引用进行检索。对于标签,
[cell.textLabel setTextColor:[UIColor redColor]];