无法在IB中设置UITableViewCell的背景颜色

fet*_*zig 30 cocoa-touch interface-builder uitableview ios

我创建了一堆单元格,我在表格视图中重复使用.所有这些细胞UILabel内部都有不同的s和一些UIImageViews(没有任何东西覆盖整个细胞).

在IB中设置背景颜色没有效果(总是白色或透明,不能说明其中哪一个).但是,如果按下Command-R(模拟界面),单元格在模拟器中具有正确的背景颜色.

我尝试将其设置为tableView:cellForRowAtIndexPath:但它不会像我想的那样工作.

这样做的诀窍:

cell.contentView.backgroundColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)

但这些没有效果(即使我设置cell.contentView.backgroundColorclearColor):

cell.backgroundView.backgroundColor = [UIColor redColor];

cell.backgroundColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)

我在IB中设置了所有布局/字体/背景内容.知道为什么这不适用于这种情况?

为什么我需要修改contentView's backgroundColor而不是backgroundView's?

这似乎是一个普遍的问题.有人可以指出我正确的方向(最终)了解如何在表格视图单元格中处理背景颜色.

小智 53

要更改单元格的背景颜色,必须在willDisplayCell:forRowAtIndexPath:方法中执行此操作.这在概述底部附近的UITableViewCell文档中提到.所以你需要:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor = [UIColor redColor];  
}
Run Code Online (Sandbox Code Playgroud)

contentView只是推荐自定义控件的子视图,以便在进行表格编辑时正确布局单元格.

  • thx的信息.但是,为什么IB中的设置不起作用?我在控制器中只设置了label.text.并设置背景IB适用于所有笔尖(UIView),但不适用于UITableViewCell. (2认同)

rus*_*ses 1

有一个更简单的解决方案:当您UITableViewCell在 Interface Builder 中创建一个时,只需拖放一个附加项UIView,使其覆盖UITableViewCell您在 IB 中创建的整个内容。将您的附加 UI 元素放置在该附加UIView. 您可以将此额外设置UIView为您喜欢的任何背景。

StackOverflow 上有很多答案建议您UITableViewCell使用如下代码行来更改背景颜色:

cell.contentView.backgroundColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)

如果您通过稍微调整 的框架大小来向单元格添加投影contentView,您可能会发现这条线会更改单元格的背景颜色和投影区域的颜色。