我需要有偶数行的白色背景和奇数行的黑色背景,我在想:
方法1: 向单元格添加属性,指示单元格在显示时的位置,以便单元格可以切换颜色, 或者当我返回单元格时,我可以检查其位置并切换其颜色
方法2: 添加一个可伸缩的背景图像,具有重复的黑白条带,因为行高是固定的,然后以某种方式使其与表格滚动
有没有其他方法可以做到这一点?
谢谢!
答案 0 :(得分: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"]];
}
答案 1 :(得分:1)
到目前为止,所有其他答案似乎都忽略了与插入和删除行相关的问题。
我认为最简单的方法是在插入或删除行时,重新加载插入/删除点下方的所有可见行。没有必要处理可见范围以下的行。
假设您有100行,并且您正在查看20-30行。如你所说,偶数行是白色的。现在,如果在第35行插入/删除了一行,则无需执行任何操作,因为所有受影响的行都在屏幕外。如果在第25行插入/删除行,它将立即以正确的颜色显示。您现在需要重新加载第26-30行,以便使用适当的新颜色进行更新。如果在第15行插入/删除了一行,则需要重新加载第20-30行(所有可见行)。
如果需要,您可以进行一些优化。例如,如果添加了两行(比如15和16,则无需执行任何操作。
基本算法是在插入/删除后调用[tableView indexPathsForVisibleRows]
。如果路径在插入/删除的索引路径之后,则重新加载每个路径。
答案 2 :(得分:0)
是的,你可以查看像indexpath%3 == 0
这样的索引路径,并为方法1的单元格添加背景颜色,如cell.backroundcolor = [UIColor bluecolor];
为方法2添加细胞的背景图像
cell.bakgroundView = [UIImageview alloc]inithWitImage:[UIImage imagenamed@"cellBG.png"]];