3

为了让我的 UITableView 看起来更好,我需要交替更改每个单元格的背景颜色。
由于我没有设法直接更改背景颜色,因此我在单元格的背景中添加了一个 UILabel,然后执行以下操作(在 cellForRowAtIndexPath 方法中):

// 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];
}

第一次显示列表时,它看起来不错(第一个单元格是浅蓝色,第二个是白色,第三个是浅蓝色......)。但是......当我播放并移动列表几次并完成单元格的背景颜色混合时。我很确定这与细胞被重复使用的事实有关,但我不知道如何解决这个问题。任何想法 ?

4

3 回答 3

9

您需要else设置另一种颜色,因为您无法预测上次为重复使用的单元格设置的颜色。

于 2012-08-10T23:32:43.630 回答
3

在 if 语句中添加一个 else 部分,在其中将背景颜色设置为另一种颜色。

于 2012-08-10T23:32:53.187 回答
2

您将需要一个 else 与您的 if 一起使用,以便以另一种方式设置颜色,否则,最终,您的所有单元格最终都会变成相同的颜色。

此外,如果您只在 if(!cell) 或 if(cell == nil) 代码块中使用该方法,则在显示出列单元格时不会调用它。因此,您需要确保它在每次都被调用的块中。

于 2012-08-11T00:44:14.353 回答