2

我遇到了自升级到 iOS7 以来出现的问题,当我尝试更改特定 tableview 单元格的背景颜色时,它不会为正确的单元格着色(通常是指定的单元格以及其他单元格)。正如您从下面的代码中看到的那样,我定义了要突出显示的类型,然后更改颜色。它在 iOS 升级之前运行良好,所以我不确定是什么改变导致了这种情况:

快速编辑:另外,当我向下滚动表格视图然后向上滚动时,它会为更多在表格视图控制器首次加载时未着色的单元格着色(如果这有帮助的话)。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString* type=[[self.HandPointer.player_hand objectAtIndex:indexPath.row]cardType];
    if ([type isEqualToString:@"ace"]){
        cell.backgroundColor = [UIColor colorWithRed:0.81 green:0.91 blue:0.81 alpha:1.0];
    }
}
4

2 回答 2

4

我认为在tableView: cellForRowAtIndexPath:方法中进行单元格定制更好。在这种方法中,

if ([type isEqualToString:@"ace"])
{
    cell.backgroundColor = [UIColor aceColor];
}
else // this else is important. If you add this, scrolling works fine.
{
    cell.backgroundColor = [UIColor otherCellColor];
}
于 2013-09-30T17:14:12.533 回答
0

您可能有一个可重复使用的单元格样式。考虑为您的 ace 设置可重复使用的单元格样式,并为所有其他 ace 设置一个单元格样式。在 cellForRowAtIndexPath 中设置背景颜色,而不是 willDisplayCell。

伪代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.
.
. 
 NSString* type=[[self.HandPointer.player_hand objectAtIndex:indexPath.row]cardType];
 if ([type isEqualToString:@"ace"]){
 {
  // load a cell with the background color desired
  cell = 
  cell.backgroundColor = 
  .
  .
  .
  return (cell);
 }

 // else a normal cell
 cell = 
 .
 .
 .
}
于 2013-09-30T17:07:26.070 回答