iOS-为什么UITableViewCell背景色不起作用(在界面生成器中设置)?

为什么UITableViewCell背景色不起作用(在界面生成器中设置)?

我从一些搜索中注意到,在UITableViewController的自定义子类中设置的以下代码确实有效(请参见下文):

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

但是我仍然只想了解为什么界面生成器具有TableViewCell的背景颜色设置,但实际上似乎不起作用?

Greg asked 2019-11-15T03:08:39Z
14个解决方案
70 votes

有点晚了,但我遇到了这个问题...在contentView776上设置背景颜色效果很好:

cell.contentView.backgroundColor = [UIColor redColor];
chris answered 2019-11-15T03:08:52Z
16 votes

对我有用的是创建自己的UIView对象,以将其设置为UITableViewCell的背景视图。 在cellForRowAtIndexPath中:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView* bgview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
bgview.opaque = YES;
bgview.backgroundColor = [UIColor orangeColor];
[cell setBackgroundView:bgview];
Shiprack answered 2019-11-15T03:09:16Z
11 votes

尝试设置UITableViewCell本身的背景颜色不是您应该做的。 表格单元格包含您可以访问的五个有用视图的集合,其中一个是backgroundView

推荐阅读:

[http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html]

然后:

[http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html]

occulus answered 2019-11-15T03:10:02Z
7 votes

根据Apple文档,您应始终以tableView:willDisplayCell:forRowAtIndexPath:而不是tableView:cellForRowAtIndexPath:方法提供对单元格的更改。

这有效!

Subbu answered 2019-11-15T03:10:33Z
3 votes
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];
Warewolf answered 2019-11-15T03:10:51Z
2 votes

在定义单元格颜色之前,请确保backgroundView为空

cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];
felipecamposclarke answered 2019-11-15T03:11:15Z
1 votes

这很简单并且有效:在界面构建器中,将视图对象添加到相同尺寸的UITableViewCell中,然后将控件放置在该视图中。 然后,您将获得所需的任何背景色。

编辑:这是一个可以接受的理由,这让我很震惊:仔细查看当您双击放入笔尖的IB中的UITableViewCell时得到的内容,然后开始向其中添加内容:您没有得到 普通矩形视图,您会得到一个椭圆形矩形,内容很清楚:Content View。 因此,您所能做的就是在IB中设置UITableViewCell的内容视图,并且设置内容视图的背景颜色属性不会在表中产生颜色变化。 正如文档所述,UITableViewCells是复杂的野兽,包含许多部分,就UITableView进行调整和摆弄而言,很多事情在幕后进行。

Bogatyr answered 2019-11-15T03:11:47Z
0 votes

如果您选择表格视图并将背景设置为红色(例如,整个表格将为红色),则效果很好。也许您没有链接表或其他东西

希望能有所帮助

Csabi answered 2019-11-15T03:12:14Z
0 votes

(尝试这个)

Apple的IB设计通用,可以应用于多种组件,并且还面向技术含量高的读者(开发人员)。 因此,尚未将其设计为(作为应用程序)针对每种组件/状况类型完全完全自定义界面。 因此,在这种情况下,看似设置背景颜色的能力有些令人误解。

Greg answered 2019-11-15T03:12:45Z
0 votes

是的,请使用setBackgroundColor

self.table.separatorColor=[UIColor whiteColor];
[table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
Splendid answered 2019-11-15T03:13:10Z
0 votes

您可以在Interface Builder(可能是最近添加到Xcode中)中部分地做到这一点:

  • 展开情节提要的文档大纲中的单元格,然后选择“内容视图”
  • 在属性检查器中设置“内容视图”背景色
  • 选择单元格中的每个内容项并设置其背景色至ClearColor

仍然看不到设置附件背景的方法。

Symmetric answered 2019-11-15T03:13:59Z
0 votes

我也确实遇到了这个问题。在IB中,您可以在选择单元格时更改单元格的背景颜色。 这是不正确的。 您应该转到情节提要板左侧的文档大纲,然后在单元格中选择内容视图。 更改内容视图的背景。 您现在应该获得正确的单元格颜色。

Odd-Arne answered 2019-11-15T03:14:24Z
0 votes
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
UIView *view = [[UIView alloc] init];
[view setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:view];}

我们需要用这种方法改变颜色。

Hemanshu Liya answered 2019-11-15T03:14:49Z
0 votes

试试这个对我有用:

- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
    tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}
answered 2019-11-15T03:15:13Z
translate from https://stackoverflow.com:/questions/5166747/why-doesnt-uitableviewcell-background-color-work-set-in-interface-builder