每次运行cellforrow方法时,我都必须刷新Firebase数据吗?

时间:2018-11-06 06:21:50

标签: ios swift firebase uitableview

我有一个名为RetrievePosts()的函数,该函数观察Firebase数据库并获取我的模型的值。我在viewdidload()中运行它。

我的cellForRow根据检索到的信息更新单元格的信息。非常标准。但是,我在每个自定义单元格上都有一个按钮,该按钮基于按钮按下的喜欢/不喜欢来打开/关闭,并且此状态更改在自定义单元格类中进行监控,并更新为firebase。

当我来回滚动表视图时,会出现问题,按钮状态又回到了从初始RetrievePost()数据中设置的状态。

我应该如何解决这个问题?。

1 个答案:

答案 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")
    }
}