1

我正在实施UITableViewDelegateUITableViewDataSource在我的 VC 中。

我有这个代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
    (NSIndexPath *) indexPath {
    // do stuff 
    if(condition){
        cell.textLabel.backgroundColor = [UIColor redColor];
    }
    else {
        cell.textLabel.backgroundColor = [UIColor blackColor];
    }
}

很标准的东西。我遇到的问题是第一组可见单元格没有着色。如果我滚动到不可见的单元格,我会得到正确颜色的单元格。如果我向后滚动,我的单元格是彩色的。

我知道单元格是根据需要“创建”和“销毁”的,这解释了其中的一些原因,我只是不明白为什么cellForRowAtIndexPath,在我看到任何东西之前就被解雇了,并且我的着色条件被击中,导致......没有着色。

一种解决方法是在调用表格视图后遍历可见单元格reloadData,我只是希望有一种更简单的方法。

丹麦人

4

1 回答 1

2

单元格着色需要在tableView:willDisplayCell:forRowAtIndexPath:委托方法中完成,而不是在tableView:cellForRowAtIndexPath:方法中。

从方法中删除任何单元格着色逻辑tableView:cellForRowAtIndexPath:并将其移至tableView:willDisplayCell:forRowAtIndexPath:方法。

于 2013-01-23T19:06:54.003 回答