Swift 3 - Xcode 8 我使用表视图下载&显示className中的所有对象:"任务"。但是,当用户到达表格视图的底部时,如何将对象数限制为25并且仅加载25个?
用户如何下拉刷新以获取最新的任务?我提前谢谢你了!!!
let query = PFQuery(className: "Task")
query.whereKey("userId", equalTo: (PFUser.current()?.objectId!)!)
query.findObjectsInBackground(block: { (objects, error) in
if let posts = objects{
for object in posts {
if let post = object as? PFObject {
self.taskType.append(post["type"] as! String)
self.taskTitle.append(post["title"] as! String)
self.taskDescription.append(post["description"] as! String)
self.taskPostal.append(post["postal"] as! String)
self.taskRegion.append(post["region"] as! String)
self.taskAmount.append(post["amount"] as! String)
self.taskAmountType.append(post["amountType"] as! String)
self.taskId.append(object.objectId!)
self.tableView.reloadData()
}
}
}
})
答案 0 :(得分:0)
我建议您使用Dwifft这非常简单,并且会使用整洁的动画自动更新您的行,而且不会出现问题。
将Dwifft + UIKit.swift和Dwifft.swift文件添加到您的项目中。配置你的UITableViewController类似于DwifftExample。您必须获取您的数据源,在您的情况下,可能是taskTitle数组属性(在selfset中使用self.diffCalculator?.rows = taskTitle)。使用此属性可返回numberOfrowsInSection委托方法中的计数,如示例所示。
在您的查询内部迭代您的对象并将其附加到属性'数组首先将它们添加到本地数组,然后在for循环外添加到带有+ =的属性。
使用Parse的 query.limit = 25 和 query.skip 进行分页时。然后在tableView委托方法willDisplayCell检查indexPath.row == taskTitle.count - 1然后再执行另一个查询,保持跟踪 .skip 值。
使用UIRefreshControl()实现pull刷新并记住使用.removeAll(keepCapacity:Bool)清理属性数组也清除.skip值
您不必使用.reloadData()以及Dwifft,因为它会自动执行您的单元格更新。
答案 1 :(得分:0)
你可以使用限制和跳过,如下所示
让query = PFQuery(className:“Task”) query.whereKey(“userId”,equalTo:(PFUser.current()?. objectId!)!)
query.limit = 50
query.skip = 0 //跳过0条记录,然后下次执行此功能,然后设置skip = 50,然后跳过50条记录。
query.findObjectsInBackground(block:{(objects,error)in