UITableView在快速滚动时混合单元格背景颜色

时间:2014-03-11 16:12:28

标签: ios objective-c uitableview

这是我的第一个IOS应用程序,当我尝试将单元格背景颜色设置为交替时,它们在我慢慢滚动时工作正常,但是当我尝试快速滚动颜色时混合:而不是白色灰色白色灰色;我得到灰色灰色白色灰色白色灰色灰色。

这就是我使用的:

    -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell
    forRowAtIndexPath:(NSIndexPath *)indexPath{

          if(indexPath.row % 2){
                cell.backgroundColor = [UIColor colorWithRed:242/255.0 green:243/255.0 blue:250/255.0 alpha:1.0];
          }

    }

我也尝试将该代码放在cellForRowAtIndexPath中,但结果是一样的:(

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您需要添加else语句以将背景颜色设置为白色。由于单元格重用,一旦单元格的背景设置为灰色,当重用于不是行%2的行时,它将永远不会被设置回白色。如下所示:

if(indexPath.row % 2){
    cell.backgroundColor = [UIColor colorWithRed:242/255.0 green:243/255.0 blue:250/255.0 alpha:1.0];
} else {
    cell.backgroundColor = [UIColor whiteColor];
}

答案 1 :(得分:1)

原因是您没有处理细胞被重复使用的事实。您提供了一半案例的说明:

if(indexPath.row % 2){
     cell.backgroundColor = [UIColor colorWithRed:242/255.0 green:243/255.0 blue:250/255.0 alpha:1.0];
}

但你不是说在另外一半案件中该做什么。

这与滚动速度无关。只是您之前设置为灰色的同一个单元格稍后将用于您想要为白色的行中。所以你需要设置为白色,或者它仍然是以前使用的灰色。对于单元格的每个方面都是如此。