gpt4 book ai didi

swift - 从 Firebase 更新值后如何停止 reloadData 滚动到我的应用程序的顶部?

转载 作者:行者123 更新时间:2023-11-28 11:37:57 25 4
gpt4 key购买 nike

我正在使用来自 Firebase 的 Observes 和 CollectionViews 来用信息填充我的单元格。我的所有数据都正确显示在我的 collectionView 上,当我在 Firebase 中更新我的帖子中的值时出现问题,应用程序在更新后开始向上滚动并复制单元格中的值。

我已经尝试在我使用的大多数常用函数中调用 reloadData,但一直滚动到顶部。只有当我用相机拍照时才会出现重复的单元格。

var postVibe = [PostVibe]()
fileprivate func fetchPostWithUser() {
guard let uid = Auth.auth().currentUser?.uid else { return }
guard let city = CityState.currentCity else { return }
let ref = Database.database().reference().child("vibes").child("city").child(city)
ref.observe(.value, with: { (snapshot) in
self.postVibe.removeAll()
if snapshot.exists() {
self.collectionView.refreshControl?.endRefreshing()

guard let vibeDic = snapshot.value as? [String: Any] else { return }
vibeDic.forEach({ (key, value) in
guard let newDic = value as? [String: Any] else { return }
var vibe = PostVibe(postId: key, dictionary: newDic)

Database.database().reference().child("votes").child(vibe.postId).child(uid).observe(.value, with: { (snapshot) in
if snapshot.exists() {

if let value = snapshot.value as? Int, value == 1 {
vibe.hasVoteUp = true
vibe.hasVoteDown = false
} else {
vibe.hasVoteUp = false
vibe.hasVoteDown = true
}

} else {

}
self.postVibe.append(vibe)
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}, withCancel: { (err) in
print("Failed to fetch Votes: ", err)
})
})

} else {
self.collectionView.refreshControl?.endRefreshing()
}
}) { (err) in
print("Failed to fetch Vibes: ", err)
}
}

我希望我的代码能够删除旧数据,只显示新数据,包括已更新的数据,以及重复的单元格,我希望在我只需要 3 个单元格时不显示 6 个单元格在数据库中。

最佳答案

这是我用于 tableView 滚动的,如果可能的话,你可以将它用于 collectionView。

 let contentOffset = tableView.contentOffset
tableView.reloadData()
tableView.setContentOffset(contentOffset, animated: false)

关于swift - 从 Firebase 更新值后如何停止 reloadData 滚动到我的应用程序的顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54550696/

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