滚动时,单元格背景在UITableViewCell中重复不正确

时间:2010-04-02 20:12:55

标签: ios objective-c cocoa-touch uitableview

我有一个填充UITableView的完整列表。我想要用不同的颜色对其中一个单元格进行背景,并且它最初工作,但出于某种原因,当我开始上下滚动表格时,它开始用绿色背景绘制更多的单元格。

请注意,总是一个detailCell.detailTimeLabel.text等于currentTime

我的代码是:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

... SOME MORE CODE HERE ...

        if ([detailCell.detailTimeLabel.text isEqualToString:currentTime]) {  
            UIView* backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
            backgroundView.backgroundColor = [UIColor greenColor];
            detailCell.backgroundView = backgroundView;
            for (UIView* view in detailCell.contentView.subviews) 
            {
                view.backgroundColor = [UIColor clearColor];
            } 
        }   
    }

哪个可能是问题?

1 个答案:

答案 0 :(得分:2)

您尝试将数据存储在tableviewcell中。你不能这样做,因为细胞不断被重复使用。您看到重复出现的背景是因为它使用不同的文本一遍又一遍地显示相同的单元格。

当您将单元格出列时,需要将其重置为空白并清除所有以前的数据。然后,只有当您放入单元格中的 数据 具有当前时间时,才应设置背景颜色。

作为一般规则,您不应该引用单元格中的数据。如果您需要知道特定单元格中的内容,请查看数据模型本身内索引路径上的数据。