Ios Can';t在IB中设置UITableViewCell的背景色

Ios Can';t在IB中设置UITableViewCell的背景色,ios,uitableview,cocoa-touch,interface-builder,Ios,Uitableview,Cocoa Touch,Interface Builder,我已经创建了一组单元格,可以在表视图中重用。所有这些单元格中都有不同的UILabels和一些UIImageViews(没有任何内容覆盖整个单元格) 在IB中设置背景色没有效果(始终为白色或透明,无法说出它们中的哪一种)。但是,如果我按下Command-R(模拟界面),单元在模拟器中具有正确的背景颜色 我试图在tableView:cellforrowatinexpath:中设置它,但它也不像我想象的那样工作 这就是诀窍: cell.contentView.backgroundColor = [UI

我已经创建了一组单元格,可以在表视图中重用。所有这些单元格中都有不同的
UILabel
s和一些
UIImageView
s(没有任何内容覆盖整个单元格)

在IB中设置背景色没有效果(始终为白色或透明,无法说出它们中的哪一种)。但是,如果我按下Command-R(模拟界面),单元在模拟器中具有正确的背景颜色

我试图在
tableView:cellforrowatinexpath:
中设置它,但它也不像我想象的那样工作

这就是诀窍:

cell.contentView.backgroundColor = [UIColor redColor];
但是这些没有效果(即使我将
cell.contentView.backgroundColor
设置为
clearColor
):

我在IB中设置了所有的布局/字体/背景。你知道为什么在这种情况下不起作用吗

为什么我需要修改
contentView
backgroundColor
,而不需要修改
backgroundView


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

要更改单元格的背景色,必须在
willDisplayCell:forRowAtIndexPath:
方法中进行。这一点在概述底部的部分提到。因此,您需要:

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

contentView只是一个推荐的子视图,用于放置自定义控件,以便在进行表编辑时正确布局单元格。

若要更改单元格的背景色,必须在
willDisplayCell:ForRowatineXpath:
方法中执行此操作。这一点在概述底部的部分提到。因此,您需要:

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

contentView只是建议将自定义控件放入其中的子视图,以便在进行表编辑时,单元格可以正确布局。

有一个更简单的解决方案:在Interface Builder中创建
UITableViewCell
时,只需拖放一个附加的
UIView
,它就可以覆盖在IB中创建的整个
UITableViewCell
。将附加的UI元素放在这个附加的
UIView
上。您可以将这个额外的
UIView
设置为您喜欢的任何背景

关于StackOverflow,有很多答案建议您使用如下代码行更改
UITableViewCell
的背景色:

cell.contentView.backgroundColor = [UIColor redColor];

如果您通过稍微调整
contentView
的帧大小向单元格添加阴影,您可能会发现此行将同时更改单元格的背景颜色和阴影区域的颜色。

有一个更简单的解决方案:在Interface Builder中创建
UITableViewCell
时,只需拖放一个附加的
UIView
,它就可以覆盖在IB中创建的整个
UITableViewCell
。将附加的UI元素放在这个附加的
UIView
上。您可以将这个额外的
UIView
设置为您喜欢的任何背景

关于StackOverflow,有很多答案建议您使用如下代码行更改
UITableViewCell
的背景色:

cell.contentView.backgroundColor = [UIColor redColor];

如果您通过稍微调整
contentView
的帧大小向单元格添加阴影,您可能会发现此行将同时更改单元格的背景颜色和阴影区域的颜色。

thx了解相关信息。但是,为什么IB中的设置不起作用?我只在控制器中设置label.text。设置背景IB在所有nib(UIView)中都有效,但不适用于UITableViewCell。目前无法确认,但UITableViewCell似乎是一个特例。在用于willDisplayCell和custom Cell的Apple文档中,提到使用这种方法,称为“在完成表格视图后,根据选择设置颜色等”。如果您在代码中创建UITableViewCell的自定义子类,但现在无法检查它,那么它可能会工作。好的,所以我只是在代码中设置它。thx为您提供了最出色的帮助。您现在只需改为设置cell.contentView.backgroundColor,例如,在cellForRowAtIndexPath:…但是注意:在Xcode5中,如果您在InterfaceBuilder中设置颜色,Xcode5将禁用表格行的整个颜色系统。愚蠢的。thx的信息。但是,为什么IB中的设置不起作用?我只在控制器中设置label.text。设置背景IB在所有nib(UIView)中都有效,但不适用于UITableViewCell。目前无法确认,但UITableViewCell似乎是一个特例。在用于willDisplayCell和custom Cell的Apple文档中,提到使用这种方法,称为“在完成表格视图后,根据选择设置颜色等”。如果您在代码中创建UITableViewCell的自定义子类,但现在无法检查它,那么它可能会工作。好的,所以我只是在代码中设置它。thx为您提供了最出色的帮助。您现在只需改为设置cell.contentView.backgroundColor,例如,在cellForRowAtIndexPath:…但是注意:在Xcode5中,如果您在InterfaceBuilder中设置颜色,Xcode5将禁用表格行的整个颜色系统。愚蠢的