如果在tableView:cellForRowAtIndexPath中设置,则cell.backgroundColor不响应

Ben*_*uan 6 cocoa-touch background-color uitableview ios

我试图用红色为某些表格着色,所以我尝试添加

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
... init Code here
cell.backgroundColor = [UIColor redColor];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
Run Code Online (Sandbox Code Playgroud)

附件Checkmark出现但不是红色.

后来我发现把它放在tableView:willDisplayCell中就可以了.这是设计的吗?为什么忽略我在初始化单元格时已经设置的值?

Rav*_*avi 3

单元的外观是在tableView:willDisplayCell. 所以,回答你的问题,是的,这是设计使然。单元格的附件视图和子视图contentView需要在 中修改/分配cellForRowAtIndexPath

来自以下文档tableView:willDisplayCell:forRowAtIndexPath:

表视图在使用单元格绘制行之前将此消息发送给其委托,从而允许委托在显示单元格对象之前对其进行自定义。此方法使委托有机会覆盖表视图之前设置的基于状态的属性,例如选择和背景颜色。委托返回后,表视图仅设置 alpha 和框架属性,然后仅在滑入或滑出行时设置动画。