Во-первых, вы должны сохранить ссылку, если кнопка уже выбрана. Во-вторых, лучше установить цвет фона кнопки для функции cellForRowAt
.
Для сохранения ссылки на выбранную кнопку можно добиться различными способами. Обычно я использовал массив объекта, который на объекте получил атрибут bool.
В вашем случае, я думаю, что самый простой способ такой: у вас уже есть массив строк, который используется для заголовка ячейки. Вы можете создать массив bool для сохранения состояния кнопки. Такие как:
var myArraySelected:[Bool] = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
Затем на cellForRowAt
поместите этот код, чтобы установить цвет фона кнопки
if (myArraySelected[indexPath.row]){
cell.fail.backgroundColor = UIColor.red
}else{
cell.fail.backgroundColor = UIColor(red: 214.0/255.0, green: 214.0/255.0, blue: 214.0/255.0, alpha: 1.0)
}
Наконец, измените действие errorBtn на:
@IBAction func errorBtn(_ sender: UIButton) {
myArraySelected[(sender as AnyObject).tag] = true
self.tableView.reloadData()
}
Не забудьте создать розетку для представления таблицы.