更改自定义单元格内容视图颜色
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
来实现此目的。
我在主视图控制器中添加了一个更改主题按钮,其中有一个很小的 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
来实现此目的。