-1

我需要为偶数行设置白色背景,为奇数行设置黑色背景,我在想:

方法一:给单元格添加一个属性,表示呈现时单元格的位置,这样单元格就可以切换颜色,或者我返回单元格的时候,可以查看它的位置并切换它的颜色

  • 这应该可以正常工作
  • 删除/添加行时需要重新加载整个表

方法2:添加一个可拉伸的背景图片,有反复的黑白条纹,既然行高是固定的,那么就让它随着表格滚动

  • 这听起来比方法 1 更聪明
  • 如果表格视图很大,这可能需要有一个非常大的背景图像

有没有其他方法可以做到这一点?

谢谢!

4

3 回答 3

4

为什么不通过检查行是奇数还是偶数来设置背景。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
    ........
    if (indexPath.row % 2 == 0)  //even
    {
    cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Black"]];


    }
    else
    {
    cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"White"]];
    }
于 2012-11-05T05:22:33.373 回答
1

到目前为止,所有其他答案似乎都忽略了与插入和删除行相关的问题。

我认为最简单的方法是当您插入或删除一行时,重新加载插入/删除点下方的所有可见行。无需处理可见范围以下的行。

假设您有 100 行,并且您正在查看第 20-30 行。如您所说,偶数行是白色的。现在,如果在第 35 行插入/删除一行,则无需执行任何操作,因为所有受影响的行都在屏幕外。如果在第 25 行插入/删除一行,它将立即以正确的颜色显示。您现在需要重新加载第 26-30 行,以便它们使用正确的新颜色进行更新。如果在第 15 行插入/删除一行,则需要重新加载第 20-30 行(所有可见行)。

如果需要,您可以进行一些优化。例如,如果添加了两行(例如在 15 和 16 处,则无需执行任何操作。

[tableView indexPathsForVisibleRows]基本算法是在插入/删除之后调用。如果路径在插入/删除的索引路径之后,则重新加载这些路径中的每一个。

于 2012-11-05T05:42:06.390 回答
0

是的,您可以检查 indexpathindexpath%3 == 0并为方法 1 的单元格添加背景颜色,例如 cell.backroundcolor = [UIColor bluecolor];

并为方法2添加单元格的背景图像
cell.bakgroundView = [UIImageview alloc]inithWitImage:[UIImage imagenamed@"cellBG.png"]];

于 2012-11-05T05:23:05.440 回答