Я столкнулся с этой странной проблемой обновления кнопки в ячейке при нажатии. У меня есть кнопка «Мне нравится», которую я меняю в зависимости от статуса, который я получаю в ответ, когда нажимаю кнопку. Таким образом, когда подобное состояние ложно. Я показываю его серым цветом и по щелчку, если изменяется статус на внутреннем сервере, и если я получаю статус как истинный в ответ, я меняю его на розовый и наоборот. Вопрос в первый раз. как только я изменяю ячейку, функциональность работает как положено.
Вот мой код
Я сделал переменную для ячейки, чтобы получить к ней глобальный доступ
var TheVideoPlayerCell:VideoPlayerCell?
func registerTableCells(){
myTable.register(UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")
myTable.register(UINib(nibName: "VideoPlayerCell", bundle: nil), forCellReuseIdentifier: "VideoPlayerCell")
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return videoArrObj?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "VideoPlayerCell", for: indexPath) as! VideoPlayerCell
TheVideoPlayerCell = cell
cell.obj = videoArrObj?[indexPath.row]
cell.btn_Likes.addTarget(self, action: #selector(onClickLike), for: .touchUpInside)
cell.selectionStyle = .none
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return CGFloat(self.myTable.frame.height)
}
Как только я получаю ответ от бэкэнда
self.TheVideoPlayerCell?.btn_Likes.isEnabled = true
let obj = try JSONDecoder().decode(LikeStatusModal.self, from: data)
let likeStatus = obj.data?.like_status ?? false
let totalLikes = obj.data?.total_likes ?? ""
if likeStatus{
self.TheVideoPlayerCell?.btn_Likes.setImage(UIImage(named: "icon_like_selected"), for: .normal)
}else{
self.TheVideoPlayerCell?.btn_Likes.setImage(UIImage(named: "icon_like_unselected"), for: .normal)
}
if totalLikes != ""{
self.TheVideoPlayerCell?.lbl_NoOfLikes.text = totalLikes
}
self.TheVideoPlayerCell?.obj?.is_like = likeStatus
self.TheVideoPlayerCell?.obj?.likes = totalLikes
self.videoArrObj?[self.currentIndex].is_like = likeStatus
self.videoArrObj?[self.currentIndex].likes = totalLikes