代码之家  ›  专栏  ›  技术社区  ›  Tommy B.

UITableViewCell上的textLabel.backgroundColor不工作

  •  12
  • Tommy B.  · 技术社区  · 14 年前

    我正在尝试设置我的UITableViewCells的标签背景颜色,它完全不起作用。我想知道是否还有其他方法可以做到这一点,所以我在问!

    我试过这个:

        cell.textLabel.backgroundColor = [UIColor redColor];
    cell.backgroundColor = [UIColor redColor];
    

    它不起作用了,还有什么吗?

    谢谢!

    2 回复  |  直到 7 年前
        1
  •  43
  •   user121301    14 年前

    我想你是在CellForRowatindexPath上尝试这个。

    根据 UITableViewCell class reference :

    注意:如果要更改 单元格的背景色(通过设置 单元格的背景色 BackgroundColor属性由声明 uiview)您必须在 表视图:将显示单元格:ForRowatindexPath: 委托的方法,而不是 表视图:cellforrowatindexpath:的 数据源。

    这样做:

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        cell.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell
        cell.textLabel.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell
        cell.textLabel.textColor = [UIColor yellowColor]; //can do here OR in cellForRowAtIndexPath
    }
    

    如果您需要对单元显示进行更精细的控制,一个简单的方法是在ib中设计它,并从cellForRowaTindexPath中的NIB加载它。请参阅上的“从NIB文件加载自定义表视图单元格”部分。 this page 在表视图编程指南中。

        2
  •  0
  •   John    7 年前

    iOS 9.3的更新。这在使用iOS 9.3的CellForRowatindexPath中实际上很有效。另请注意:要更改整个单元格的颜色,请使用:

    cell.contentview.backgroundcolor=[uicolor redcolor];