在iOS7中更改tableview单元格的背景色

在iOS7中更改tableview单元格的背景色,ios,uitableview,ios7,Ios,Uitableview,Ios7,升级到iOS7后出现了一个问题,当我试图更改特定tableview单元格的背景颜色时,它没有为正确的单元格着色(通常是指定的单元格和其他单元格)。从下面的代码中可以看出,我定义了要高亮显示的类型,然后更改颜色。它在iOS升级之前工作得很好,所以我不确定是什么变化导致了这种情况: 快速编辑:此外,当我向下滚动tableview并进行备份时,它会为tableview控制器首次加载时未着色的更多单元格着色(如果这有帮助的话) 您可能有一个可重复使用的单元样式。考虑为你的ACE提供一个可重用的单元样式,

升级到iOS7后出现了一个问题,当我试图更改特定tableview单元格的背景颜色时,它没有为正确的单元格着色(通常是指定的单元格和其他单元格)。从下面的代码中可以看出,我定义了要高亮显示的类型,然后更改颜色。它在iOS升级之前工作得很好,所以我不确定是什么变化导致了这种情况:

快速编辑:此外,当我向下滚动tableview并进行备份时,它会为tableview控制器首次加载时未着色的更多单元格着色(如果这有帮助的话)


您可能有一个可重复使用的单元样式。考虑为你的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 = 
 .
 .
 .
}

您可能有一个可重复使用的单元样式。考虑为你的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 = 
 .
 .
 .
}

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

if ([type isEqualToString:@"ace"])
{
    cell.backgroundColor = [UIColor aceColor];
}
else // this else is important. If you add this, scrolling works fine.
{
    cell.backgroundColor = [UIColor otherCellColor];
}

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

if ([type isEqualToString:@"ace"])
{
    cell.backgroundColor = [UIColor aceColor];
}
else // this else is important. If you add this, scrolling works fine.
{
    cell.backgroundColor = [UIColor otherCellColor];
}

对让“其他人”解决问题。但是为什么tableView:cellForRowAtIndexPath方法更好?当然,这不是一个规则,但一般来说,此方法用于单元格自定义。我也想了解如果将自定义放置在willDisplayCellYes中会导致问题的iOS框架是什么!让“其他人”解决问题。但是为什么tableView:CellForRowatineXpath方法更好?当然,这不是一个规则,但一般来说,此方法用于单元格自定义。我也想了解如果将自定义放置在willDisplayCell中,iOS框架会导致什么问题