Swift 指示tableView indexPath何时是最后一个

Swift 指示tableView indexPath何时是最后一个,swift,parse-platform,Swift,Parse Platform,我正在实现显示post部分,我想让它做分页,我得到了查询部分。我的理解是,当用户到达tableView中更新的最后一篇文章时,我设置了有限的文章数量,查询将在下一个设置限制时获取更多对象 对于这些,我需要一些指示何时在最后一个或在最后一个之前到达tableView indexPath 我搜索了一些,我认为这是一个好的,但我不知道这是什么意思 有谁能解释一下这意味着什么(它是如何工作的)以及如何在UITableView的重载数据中对此进行子类化 fun reloadData() { print(

我正在实现显示post部分,我想让它做分页,我得到了查询部分。我的理解是,当用户到达tableView中更新的最后一篇文章时,我设置了有限的文章数量,查询将在下一个设置限制时获取更多对象

对于这些,我需要一些指示何时在最后一个或在最后一个之前到达tableView indexPath

我搜索了一些,我认为这是一个好的,但我不知道这是什么意思

有谁能解释一下这意味着什么(它是如何工作的)以及如何在UITableView的重载数据中对此进行子类化

fun reloadData() {
print("begin reload")
super.reloadData()
print("end reload")
}
我添加了我的抓取代码,我认为它不起作用


首先,让我们解决分页问题。现在分页是不可撤消的,但它确实需要您的服务器接受页面,以便知道返回哪一组结果。例如,如果您有100个结果,组大小为20,那么在url请求中,您必须指定是否需要页面
0-4

我个人建议使用开源库为您处理分页。看一看,它确实为您提供了一些分页支持。如果你有雄心壮志,并且你想自己实现它,你需要建立一些网络服务,最好是建立在跟踪最后请求的页面的基础上

在swift中,这看起来像这样:

func fetchObjectsForModel(model: String, atPage page: Int, withBlock block: ([PFObejct], NSError?) -> Void {

}
NetworkManager.GET('http://someURI,参数:[:],第0页)

不知何故,你必须保持下一页的状态。正如所建议的,更好的设计是使用协议和某种数据源包装器,从客户端抽象出机制

现在,您还询问了如何检测表视图何时滚动到末尾,以便发出网络请求。一种方法是观察
scrollViewDidScroll
UITableView
继承自
UIScrollView
)并检查
contentOffset
是否为
=self.tableView.contentSize-self.tableView.frame.size.height
(这将是表格一直滚动时的内容偏移量)。但是,您希望应用程序的用户能够保持滚动,而不必滚动到底部,等待加载,然后继续滚动,因此我将在他们滚动页面3/4时触发请求,或者如果您知道请求将花费很长时间,甚至在中途触发请求。这样,当他们到达底部时,它已经加载了数据,用户将永远不会知道差异

编辑:

除了我的回答之外,我还想给你提一些建议。1) 看看这个:

它讨论了MVVM设计模式,它更适合保存状态,而不是在视图控制器中使用状态变量

2) 函数fetchAllObjectsFromParse是一个坏名字,原因有两个。首先,该名称意味着该函数一次获取所有对象,如果希望对其进行分页,则情况并非如此

也许是这样的:

func fetchObjectsForModel(model: String, atPage page: Int, withBlock block: ([PFObejct], NSError?) -> Void {

}
然后生成另一个函数,该函数将生成您的查询:

func generateQueryWithSkips(skip: Int, limit: Int) -> PFQuery {}

您正在尝试建立分页网络吗?或者,您只是想知道用户何时滚动到表视图的末尾,以便您可以加载更多结果(本质上是分页)。我正在执行第一个,因此我正在寻找本质上是分页的函数。如果你两个都解释给我听,那就最好了。我在这里添加了获取代码,我认为它不起作用。我会在用户到达tableView的一半时尝试,然后获取接下来的25个数据。我必须通过tmr来做这件事,你认为这对初学者来说很难吗?这不是不可能的,但我个人会花时间,以这样一种方式来设计架构,所有东西都是封装的等等。如果这个答案对你有效,你介意接受吗?