问题描述
我正在使用 collectionView 构建聊天功能,并在此过程中实现了分页:
但是,每当我向模型数组添加更多消息并使用 collectionView.reloadData()
重新加载 collectionView 数据时,内容偏移量不会受到尊重,并且会直接跳到顶部。
这是用于获取和加载更多数据到 collectionView 的代码:
fileprivate func fetchMoreMessages(){
let db = Firestore.firestore()
db.collection("Messages").document(currentUserUid!).collection(chatUserUid!).order(by: "timestamp",descending: false).end(beforeDocument: firstDocumentSnapshot!).limit(to: 20).getDocuments { [self] (snapshot,error) in
if let error = error{
print("error in retrieving docs",error.localizedDescription)
return
}
let firstDoc = snapshot?.documents.first
self.firstDocumentSnapshot = firstDoc
var arrayOfDocuments : [MessageModel] = []
snapshot?.documents.forEach({ (snapshot) in
let dict = snapshot.data()
var message = MessageModel()
message.initiateMessageWith(dict: dict)
arrayOfDocuments.append(message)
})
self.listofMessages.insert(contentsOf: arrayOfDocuments,at: 0)
self.collectionView.reloadData()
}
}
并在发生这种情况时立即调用:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y <= 100{
if self.isPaginating == false && ((firstDocumentSnapshot?.exists) != nil){
fetchMoreMessages()
self.isPaginating = true
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)