我正在尝试用红色为某些表格着色,所以我尝试添加
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
... init Code here
cell.backgroundColor = [UIColor redColor];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
附件检查标记出现但不是红色。
我后来发现通过将它放在tableView:willDisplayCell中它可以工作。这是设计的吗?为什么它忽略了我在初始化单元格时已设置的值?
答案 0 :(得分:3)
单元格外观在tableView:willDisplayCell
中自定义。所以,回答你的问题,是的,它是设计的。需要在contentView
中修改/分配单元cellForRowAtIndexPath
的附件视图和子视图。
来自tableView:willDisplayCell:forRowAtIndexPath:
的文档:
表视图在使用单元格绘制行之前将此消息发送到其委托,从而允许委托在显示之前自定义单元格对象。此方法为委托提供了覆盖表视图前面设置的基于状态的属性的机会,例如选择和背景颜色。委托返回后,表视图仅设置alpha和frame属性,然后仅在行滑入或滑出时为其设置动画。
答案 1 :(得分:1)
仅供参考,Ravi的回答是正确的,但如果您想简化实施,您也可以设置单元格的contentView背景颜色以达到同样的效果。
cell.contentView.backgroundColor = [UIColor redColor];
这不是文档化的解决方案,但以下方法可行:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
... init Code here
cell.contentView.backgroundColor = [UIColor redColor];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}