如何解决斯威夫特 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 举报,一经查实,本站将立刻删除。