更改自定义单元格内容视图颜色

Change custom cell content view color

我在主视图控制器中添加了一个更改主题按钮,其中有一个很小的 ​​table 视图。我可以更改除 table 视图单元格的内容视图背景颜色之外的所有颜色,而且我无法在 cellForRowAt 之外访问它。

我该怎么办?有没有办法从我的自定义 Cell 中触发一个函数来改变颜色?

您可以在控制器中添加 属性 来确定单元格的颜色。当你想改变颜色时,你调用 tableView.reloadData()。这将使 cellForRowAt 在每个可见单元格上被调用,并且您可以在此委托方法中更改颜色。

Your viewController

YourViewController: UIViewController {
    fileprivate var cellColor = UIColor.blue

    // where you change color
    func changeColor() {
        cellColor = UIColor.red
        // this will make the delegate method `cellForRowAt` be called on each visible row
        tableView.reloadData()
    }
}

cellForRowAt:

// delegate method
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "reuse id", for: indexPath) as! YourCustomCell
    cell.contentView.backgroundColor = cellColor
    // anything else...
    return cell
}

如果您有自定义单元格 class 并访问委托方法以更改内容视图颜色,则可以通过实施 delegate 来实现此目的。