我目前正在使用CloudKit作为我的后端,到目前为止,我一直非常喜欢它。
我发生了一个查询,它检索数据以填充表格视图。
由于我不知道它可能具有的项目数量,因此我将查询过滤为X个项目(让我们说15个)。
我的目标是当用户向下滚动到表格视图的底部(最后查询的项目)时查询后端以继续填充表格视图。
我已经搜索过但无法找到执行此操作的CloudKit代码。
有人可以给我一些关于如何做的提示吗?
谢谢大家的帮助。 最好,伊万。
答案 0 :(得分:1)
在IOS上我认为你必须使用UITableViewController或只是UITableView。
将UIActivityIndicatorView(即微调器)添加到UITableViewController。将插座连接到代码:
@IBOutlet weak var spinner: UIActivityIndicatorView!
向您的UITableViewController添加一个属性,以跟踪您当前正在加载更多数据,这样您就不会尝试两次:
var loadingData = false
启动微调器动画,然后调用refreshRes():
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if !loadingData && indexPath.row == refreshPage - 1 {
spinner.startAnimating()
loadingData = true
refreshRes()
}
让refreshRes()在后台线程上运行。这将使您的桌子仍然可以自由移动。动画微调器将告诉用户更多数据即将到来。查询返回后,更新主线程上的表数据。
func refreshRes() {
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
// this runs on the background queue
// here the query starts to add new 15 rows of data to arrays
dispatch_async(dispatch_get_main_queue()) {
// this runs on the main queue
self.refreshPage += 15
self.tableView.reloadData()
self.spinner.stopAnimating()
self.loadingData = false
}
}
之后,取决于服务器结果,您必须发出请求以获取其他15个数据