微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

斯威夫特 5.1使用 UITableView 分页 Firestore 文档 x 次

如何解决斯威夫特 5.1使用 UITableView 分页 Firestore 文档 x 次

我目前可以从 firestore 集合中获取所有文档(它总共有大约 20 个文档)。我想将请求分页到 UITableView(例如,第一个请求将创建 3 个 tableView 行,随后的每个请求都会创建 3 个。)。

tableview 方法:numberOfRowsInSection 和 cellForRowAt 已经设置,如果没有分页(如果整个集合在 1 go 中加载),则它们正在工作。

import Firebase

class tableViewList: UITableViewController {

var queryArray: [QueryDocumentSnapshot] = []

override func viewDidLoad() {

loadDocuments()
}




func loadDocuments() {
let documents = Firestore.firestore().collection("COLLECTION NAME").order(by: 
"CITY",descending: false).limit(to: 3)
documents.addSnapshotListener { [weak self] (querySnapshot,err) in
guard let strongSelf = self else {return}
if err != nil {
print("NOT WORKING")
} else {
strongSelf.queryArray = querySnapshot?.documents  {
for fields in strongSelf.queryArray {
let data = fields.data()
// Get document fields..... ( got this to work )

dispatchQueue.main.async {
strongSelf.tableView.reloadData()
}
}
}
}
}

// Start of the issue ( paginate 3 subsequent documents )
guard let lastSequence = querySnapshot?.documents.last else {return}
let nextSequence = Firestore.firestore().collection("COLLECTION 
NAME").order(by: 
"CITY",descending: false).start(afterDocument: lastSequence)

// This is where I am stuck on how to load more documents ( and 
// tableView cells )



    }
    
}


override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
    return queryArray.count
    
}

// the cellForRow is not important since it's out of the question 
// scope
    override func tableView(_ tableView: UITableView,cellForRowAt 
indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: 
"ListCell",for: indexPath) as! ListCell
}


}

// I researched online this func ( willdisplay ) can create new 
// tableView cells for the pagination,but I cannot understand it 
// properly ). Not sure if this func is required.
override func tableView(_ tableView: UITableView,willdisplay cell: 
UITableViewCell,forRowAt indexPath: IndexPath) {


// Any help will be appreciated. thanks.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。