gpt4 book ai didi

ios - UITableView 的 LikeButton

转载 作者:行者123 更新时间:2023-11-30 11:24:48 26 4
gpt4 key购买 nike

我有一个问题。当我单击“喜欢”按钮时,“喜欢”计数会刷新“喜欢”数量,但是当我滚动 UITableView 并返回到帖子时,likecount 返回到之前的值。示例:我有 1 个赞,我点击“赞”,likecount 为 2,但是当我滚动 UITableView 并返回到该帖子时,我又获得了 1 个赞。为什么?

@IBAction func likePressed(_ sender: Any) {
self.like.isEnabled = false
let ref = Database.database().reference()
let keyPost = ref.child("posts").child(self.postID)
keyPost.observeSingleEvent(of: .value) { (snapshot) in
if let post = snapshot.value as? [String: AnyObject] {
var likes = post["likes"] as! Int
likes = likes+1
let update = ["likes" : likes]
self.likecount.text = "\(likes) Likes"
keyPost.updateChildValues(update)
}
ref.removeAllObservers()
}
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PostCell", for: indexPath) as! PostCell
cell.postID = self.posts[indexPath.row].postID
cell.likecount.text! = "\(self.posts[indexPath.row].likes!) Likes"
cell.postImage.sd_setImage(with: URL(string: self.posts[indexPath.row].pathToImage), placeholderImage: UIImage(named: "placeholder.png"))

return cell
}

最佳答案

UITableViewCells 是可重用的,因此滚动时它们的加载和处理速度非常快。您不能只更新单元格中的值并期望它被存储。

您需要更新向 tableView 提供信息的数据。因此,当重新加载该特定单元格时,它可以在 cellForRowAt 中设置正确的值。

如果您将此信息存储在 Firebase 中,则可能需要在更新后重新加载数据。显示您的 cellForRowAt 函数以获得更准确的答案

编辑:

好的,您的问题是,您有一些来自 Firebase 的结果存储在 self.posts 中,但您使用 keyPost.updateChildValues(update) 更新了 Firebase 版本>。每当您执行此操作时,您都需要使用更新的数据更新 self.posts 。

关于ios - UITableView 的 LikeButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50865640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com