-1

我正在使用解析服务器。

我有 # 个社交媒体帖子,其中包含我添加到 tableview 的数据。一切都正确加载。但是,我有大量的帖子(50)。

我只想将 tableview 限制为最多 10 个,我通过 query.limit 成功使用了它。但是,一旦用户滚动通过该系列的最后 10 个,我想在 tableView 上加载下一个 10。

此外,我想删除该系列的前 10 个,因为这会占用我用户手机上的太多数据。

4

1 回答 1

1

我建议不要删除 UITableView 中的当前项目,因为这是一种不正常的设计模式,可能会使您的用户感到困惑。UITableViews 和 UICollectionViews 旨在重用单元格以提高性能。

这是我将如何处理分页。此示例使用 UICollecitonView,但您应该能够对您的 tableview 应用相同的逻辑

var skip = 0
var loading = false
var fullyLoaded = false
var posts = [Post]()

func queryPosts(){
    guard !self.fullyLoaded else{return}
    guard !self.loading else{return}
    self.loading = true
    let query = Post.query()
    query?.limit = 10
    query?.skip = self.skip
    query?.findObjectsInBackground(block:{
        (posts, error) in
        for post in posts{
            self.posts.append(item)
        }
        self.skip = self.posts.count
        if posts.count == 0{self.fullyLoaded = true}
        self.loading = false
        self.collectionView.reloadData()
    })
}

func collectionView(_ collectionView:UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
    let cell = collectionView.dequeueReusableCell(indexPath: indexPath) as PostCell
    cell.loadPost(self.posts[indexPath.item])

        if self.posts.count == indexPath.item - 1{
            self.queryPosts()
        }

    return cell
}
于 2019-10-22T20:44:50.997 回答