Есть ли возможность установить динамический backgroundColor со статическими ячейками в UITableView?
Например, пользователь нажал кнопку в UITableView, а затем все ячейки в том же представлении изменились на определенный цвет.
Я уже понял, как установить backgroundColor при появлении представления:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.backgroundColor = UIColor.black
}
Теперь я хочу добиться того же, когда представление уже загружено. Какие-либо предложения?





Вы можете использовать метод делегата под названием 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
}
Вы можете получить доступ к видимым в данный момент ячейкам (тем, которые прошли этап willDisplay) через свойство visibleCells. Вы можете перебирать этот массив и делать все, что вам нужно:
for cell in tableView.visibleCells {
cell.backgroundColor = UIColor.black
}
В качестве альтернативы вы можете вызвать reloadData() в tableView, это приведет к воссозданию и повторному отображению всех ячеек.