我有一个名为RetrievePosts()的函数,该函数观察Firebase数据库并获取我的模型的值。我在viewdidload()中运行它。
我的cellForRow根据检索到的信息更新单元格的信息。非常标准。但是,我在每个自定义单元格上都有一个按钮,该按钮基于按钮按下的喜欢/不喜欢来打开/关闭,并且此状态更改在自定义单元格类中进行监控,并更新为firebase。
当我来回滚动表视图时,会出现问题,按钮状态又回到了从初始RetrievePost()数据中设置的状态。
我应该如何解决这个问题?。
答案 0 :(得分:2)
通常在不为状态添加“其他条件”时发生。例如,如果有10个数据对象,则5个可见。当我们来回滚动时,单元被重用。现在假设您只喜欢一个单元。当我们来回滚动时,此单元格将被重用于显示其他数据模型,如果您不给出“其他条件”的机会,则某些单元格的状态将显示为“喜欢”。
您可以从以下代码中获取要点
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCell(withIdentifier: "Identifier") as? CustomCell
let postModel = postModelArray[indexPath.row]
if postModel.isLiked {
cell.likeImageView.image = UIImage(named: "Liked")
} else {
cell.likeImageView.image = UIImage(named: "NotLiked")
}
}