我创建了一个tableView,当用户滚动到最后一个单元格时,将加载更多数据。在willDisplayCell中,我实现了这个代码,从堆栈溢出中的类似问题中引用。但是当我滚动到底部时,它不会加载一次数据,它会创建一个循环并多次调用loadMore函数。
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let lastData = self.data!.count - 1
if indexPath.row == lastData {
currentPage += 1
self.loadData(currentPage)
}
}
func loadData() {
self.showLoadingView()
apiCALL(callback: { data
self.jsonDATA.append(contentsOf: data)
self.tableView.reloadData()
})
}
答案 0 :(得分:0)
添加布尔参数以避免无限循环。
var isLoading = false
func loadData() {
isLoading = true
self.showLoadingView()
apiCALL(callback: { data
self.isLoading = false
self.jsonDATA.append(contentsOf: data)
self.tableView.reloadData()
})
}
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let lastData = self.data!.count - 1
if !isLoading && indexPath.row == lastData {
currentPage += 1
self.loadData()
}
}