То, что вам не хватает, это повторное использование ячеек, вы должны хранить каждое действие внутри массива модели, проверять текущее значение и устанавливать соответствующие настройки внутри cellForRowAt
, вы можете установить делегат действий для vc для кнопки внутри cellForRowAt
для упрощения доступа к массиву модели для управления им, когда пользователь нажимает эту кнопку в определенном indexPath, поэтому рассмотрите возможность объявления массива следующим образом
let arr = [false,true,false,false,false] first index is dummy as it will be skipped in Create New HashTag
//
@objc func btnClicked(_ sender:UIButton) {
arr[sender.tag] = !arr[sender.tag]
// reload indexPath of row = sender.tag , section = 0
}
//
Внутри cellForRowAt
if (indexPath == [0,0]) {
let image = UIImage(named: "add")
cell.checkBoxOutlet.setBackgroundImage(image!, for: .normal)
cell.pickerLabel.text = "Create New HashTag"
cell.isCreateTagCell = true
}else{
let image = UIImage(named: arr[indexPath.row] ? "tick" : "uncheck") // edited here
cell.checkBoxOutlet.setBackgroundImage(image!, for: .normal)
cell.pickerLabel.text = arrayHashTags[indexPath.row]
cell.isCreateTagCell = false
}
cell.button.addTarget(self, action: #selector(btnClicked(_:)), for: .touchUpInside)
cell.button.tag = indexPath.row