Ios UITableViewController和UIColor在滚动时更改位置

Ios UITableViewController和UIColor在滚动时更改位置,ios,uitableview,uicolor,Ios,Uitableview,Uicolor,大家好,我有一个普通的UITableViewController,里面有一些电池, 我只有一个单元格具有此属性: cell.backgroundColor = [UIColor lightGrayColor]; 它显示了一个灰色的细胞(好) 当我使用滚动条时,问题就出现了,(我轻触窗口,然后向下看。) 其他单元格)在这种情况下,单元格的灰色会(疯狂地)从原来的位置移动 去另一间牢房 为什么 守则: 静态NSString*CellIdentifier=@“Cell” 当您在UITableView

大家好,我有一个普通的UITableViewController,里面有一些电池, 我只有一个单元格具有此属性:

cell.backgroundColor = [UIColor lightGrayColor];
它显示了一个灰色的细胞(好)

当我使用滚动条时,问题就出现了,(我轻触窗口,然后向下看。) 其他单元格)在这种情况下,单元格的灰色会(疯狂地)从原来的位置移动 去另一间牢房

为什么

守则:

静态NSString*CellIdentifier=@“Cell”


当您在
UITableView
中滚动时,从视图中滚动出来的单元格将被重新用于滚动到视图中的单元格。这就是下面这一行的目的:

cell = [tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];
因此,如果这一行返回一个单元格,则每次都需要设置背景颜色,因为您可能会得到背景为灰色的单元格

if (isGrayCell)
    cell.backgroundColor = [UIColor lightGrayColor];
else
    cell.backgroundColor = [UIColor clearColor];
更新

设置背景色的代码没有意义。如果回收的单元格具有灰色背景,则即使需要其他颜色,也可以将其再次设置为灰色。像这样的应该是这样的:

if(currentStatus == KBI_NAME && indexPath.row == 0)
{
   cell.backgroundColor = [UIColor lightGrayColor];
}
else
{
   cell.backgroundColor = [UIColor clearColor];
}
更新2

如果每次只需初始化单元格,可能会容易得多:

cell.backgroundColor = [UIColor clearColor];

如果您需要灰色背景,则稍后会再次将颜色更改为灰色。

我已经每次都设置了背景。我没有得到答案OK现在灰色保持在相同的位置不会移动,但是其他单元格仍然疯狂地改变颜色请将
表格视图:cellforrowatinexpath
方法的完整代码添加到您的问题中。没有代码,这只是猜测。我确实在if(cell==nil){…}之后添加了您的代码,但似乎无法使用更简单的解决方案进行另一次更新。
cell.backgroundColor = [UIColor clearColor];