是否可以在UITableView中使用静态单元格设置动态backgroundColor?
例如,用户按下UITableView中的按钮,然后同一视图中的所有单元格都变为特定的颜色。
我已经想出了显示视图时如何设置backgroundColor的方法:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.backgroundColor = UIColor.black
}
现在,我想在视图已加载时实现相同的效果。有什么建议吗?
答案 0 :(得分:2)
您可以通过visibleCells属性访问当前可见的单元格(经过willDisplay
里程碑的那些单元格)。您可以遍历此数组并执行所需的任何操作:
for cell in tableView.visibleCells {
cell.backgroundColor = UIColor.black
}
或者,您可以在tableView上调用reloadData()
,这将导致重新创建并重新显示所有单元格。
答案 1 :(得分:0)
您可以使用一种名为DidSelect
的委托方法,当用户在tableView或某个元素内点击一个单元格并返回所选单元格的索引路径时,该方法就可以使用该方法来编辑背景色或任何东西。
该函数内部的代码应为optional func tableView(_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath)
类似的代码,您可以使用cellForRowAtIndexPath获取单元格,并将其传递给选定的路径,并将其强制转换为您拥有的单元格类型,然后对其进行编辑或执行任何操作。
完整代码如下所示
optional func tableView(_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath){
let cell = tableView.cellForRow(at: indexPath)
//use the cell object and do what you want
}