2012-08-10 62 views
3

为了使我的UITableView看起来更好,我需要改变每个单元的背景颜色。
因为我没能直接改变背景颜色,我已在该单元格的背景一个UILabel然后执行以下(cellForRowAtIndexPath方法中):更改每个其他单元的UItableViewCell背景颜色

// Set cell color 
if(indexPath.row % 2 == 0){ 
    UIView *bckView = (UIView *)[cell viewWithTag:100]; 
    bckView.backgroundColor = [UIColor colorWithRed:226.0/255.0 green:243.0/255.0 blue:1.0 alpha:1.0]; 
} 

当显示列表第一次看起来不错(第一个细胞是浅蓝色,第二个是白色,第三个是浅蓝色......)。但是......当我玩这个列表并移动好几次时,单元格的背景颜色就变得混杂了。我很确定这与单元格被重用的事实有关,但我无法弄清楚如何解决这个问题。任何想法 ?

回答

9

您需要一个else来设置其他颜色,因为您无法预测上次为重复使用的单元设置的颜色。

3

将if语句的另一部分添加到其中将背景颜色设置为其他颜色的位置。

2

你需要一个其他的方法来配合你的if来为另一种方式设置颜色,否则最终所有的单元格都会以相同的颜色结束。另外,如果你只在if(!cell)或if(cell == nil)代码块中有该方法,则在显示出队单元时它不会被调用。所以,你需要确保它在每次被调用的块中。