我已经在这个网站上查看过这个问题的几十个答案,但我仍然无法让它工作。就像我之前的许多人一样,我希望在表格视图中更改几个单元格中的颜色。我尝试将条件if(indexPath.row == ...)然后将几个单元格的颜色更改为红色,但这总是会导致其他单元格逐渐变为红色,从而更多地滚动。我尝试从以下位置移动此代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
到这里:
- (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath
但这仍然无效。我怎样才能改变细胞的颜色,比如说,5。13和40是红色的?
答案 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];
}