我正在使用IB中设置的基本表格视图单元格。我应用的唯一自定义是在cellForRowAtIndexPath中,我只需设置单元格标签的背景颜色(不单元格本身的颜色)。
[[cell textLabel] setBackgroundColor:[UIColor yellowColor]];
首次绘制表格时,不会应用背景颜色。当我向下滚动时, 将在绘制新单元格时应用它们。同样,如果我向上滚动,顶部单元格将使用正确的背景颜色重新绘制。
这背后的解释是什么?
编辑 - 这是我的cellForRowAtIndexPath,以及IB中的设置:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
ItemCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ItemCell2"];
[[cell textLabel] setBackgroundColor:[UIColor yellowColor]];
return cell;
}
答案 0 :(得分:5)
你必须使用
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
来自文档:
表视图在使用单元格绘制行之前将此消息发送到其委托,从而允许委托在显示之前自定义单元格对象。此方法使代理有机会覆盖表视图前面设置的基于状态的属性,例如选择和背景颜色。