2015-12-24 34 views
1

所以我想实现的基本上是使用PFQueryTableViewController无限滚动。到目前为止,我已将paginationEnabled设置为false,因为我想隐藏出现的“显示更多”单元格。我还设置每个“页面”加载的帖子数量为10.PFQueryTableViewController无限滚动swift

self.paginationEnabled = false 
self.objectsPerPage = 10 

现在为无限滚动。我已经设置了以下功能

override func scrollViewDidScroll(scrollView: UIScrollView) { 
    if (scrollView.contentSize.height - scrollView.contentOffset.y < (self.view.bounds.size.height)) { 
     if !self.loading { 
      self.loadNextPage() 
     } 
    } 
} 

的问题是,当它到达终点(最后一个数据库行),它只是不断循环以前的tableView细胞。我需要一种方法来检查是否有新的数据库行可以读取或不读取。有任何想法吗?

回答

0

好的,所以我这样做的方式是我将paginationEnabled设置为true而不是false。

self.paginationEnabled = true 

然后,我跟进了以下功能

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if indexPath.row + 1 > self.objects?.count { 
     return 0 
    } 
    let height = super.tableView(tableView, heightForRowAtIndexPath: indexPath) 
    return height 
} 

这里做的事情是,它会检查“加载更多”细胞。如果有10个对象,那么第11个将是“加载更多”单元。因此indexPath.row + 1。然后将其高度设置为0,从而隐藏它。

1

我建议你一个主意:

你的objectsPerPag = 10。但是当你查询你会查询11.如果你真正的查询返回11个对象,所以这个结果意味着继续有另一个对象。你会继续加载。当你返回时,你将删除这个结果查询的最后一个对象,你会得到10个项目,你想要的。

希望我的想法能帮助你!

+0

好想法,但我设法弄明白了! :) –