PFQueryTableViewController 无限滚动 swift

PFQueryTableViewController infinite-scroll swift

所以我想要实现的基本上是使用 PFQueryTableViewController 无限滚动。到目前为止,我已将 paginationEnabled 设置为 false,因为我想隐藏出现的 "Show more" 单元格。而且我还设置了每个 "page" 加载的帖子数量为 10.

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 单元格。我需要一种方法来检查是否有新的数据库行要获取。有什么想法吗?

我给你一个建议:

你的objectsPerPag = 10。但是当你查询的时候你会查询11个。如果你实际查询return11个对象那么这个结果意味着继续有另一个对象。您将继续加载更多。当您 return 您将删除此结果查询的最后一个对象时,您将根据需要获得 10 个项目。

希望我的想法能帮到你!

好的,我这样做的方法是将 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
}

它的作用是检查 "Load more" 单元格。如果有 10 个对象,那么第 11 个将是 "Load more" 单元格。因此indexPath.row + 1。然后它将其高度设置为 0 以隐藏它。