Firebase UICollectionView刷新:多次获取每个单元格
嗨,我有一个问题,刷新我的collectionView后,我将每个单元格打开两次 我的看法。在第二次刷新后,我将对每个单元格进行3次刷新。我在第二次使用segue呈现视图时也遇到了这个问题 我怎样才能解决这个问题 有人能帮我吗 提前谢谢你!!!Firebase UICollectionView刷新:多次获取每个单元格,firebase,firebase-realtime-database,uicollectionview,swift5,Firebase,Firebase Realtime Database,Uicollectionview,Swift5,嗨,我有一个问题,刷新我的collectionView后,我将每个单元格打开两次 我的看法。在第二次刷新后,我将对每个单元格进行3次刷新。我在第二次使用segue呈现视图时也遇到了这个问题 我怎样才能解决这个问题 有人能帮我吗 提前谢谢你!!! Firebase函数是异步的,在同步代码运行后将调用闭包中的代码。换句话说,你有这个 fetchData() posts.removeAll() collectionview.reloadData() 但是在填充数组之前将调用post
Firebase函数是异步的,在同步代码运行后将调用闭包中的代码。换句话说,你有这个
fetchData()
posts.removeAll()
collectionview.reloadData()
但是在填充数组之前将调用posts.removeAll()
和collectionview.reloadData()
下面是对调用顺序的简要概述
@objc private func refreshData(_ sender: Any) {
self.loadFirebaseData()
}
func loadFirebaseData() {
...
self.posts = []
for (_,post) in postsSnap {
self.posts.append(posst)
}
self.posts.sort(by: {$0.postdateprog > $1.postdateprog}
self.collectionview.reloadData()
}
注意,我将排序和重载数据移到for循环之外。在填充数据源时,没有理由反复调用这些函数。完成该任务后再执行。Firebase函数是异步的,在同步代码运行后将调用闭包中的代码。换句话说,你有这个
fetchData()
posts.removeAll()
collectionview.reloadData()
但是在填充数组之前将调用posts.removeAll()
和collectionview.reloadData()
下面是对调用顺序的简要概述
@objc private func refreshData(_ sender: Any) {
self.loadFirebaseData()
}
func loadFirebaseData() {
...
self.posts = []
for (_,post) in postsSnap {
self.posts.append(posst)
}
self.posts.sort(by: {$0.postdateprog > $1.postdateprog}
self.collectionview.reloadData()
}
注意,我将排序和重载数据移到for循环之外。在填充数据源时,没有理由反复调用这些函数。任务完成后再做