ios - 向上滚动 tableView 的无限滚动?

标签 ios swift uitableview uikit

我有一个聊天消息应用程序,它从最早到最新加载我的消息,然后自动滚动到底部以便用户看到最新的。

我只加载了 25 条消息,然后当用户滚动到顶部时,我想上传接下来的 25 条消息。事实证明这真的很棘手,并以无限循环告终。

这是我正在做的:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    guard indexPath.row == 1 else { return }
    fetchNextMessages(with: lastReference: lastMessage.reference)
}

在表格滚动到底部之前,它开始获取下一组,这是错误的。所以我尝试了这个:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    guard scrollView.contentOffset.y <= 0 else { return }
    fetchNextMessages(with: lastReference: lastMessage.reference)
}

但是,同样的问题。有更好的方法来处理这个问题吗?

最佳答案

你应该注意这个方法被多次调用,你应该在用新数据重新加载表格后使fetchingNow = false,此外当你加载新内容时不要滚动到最旧的并让用户向上滚动以查看剩余的

 func scrollViewDidScroll(_ scrollView: UIScrollView) {
    guard scrollView.contentOffset.y <= 0 else { return }

    if(!fetchingNow)
    {
        fetchNextMessages(with: lastReference: lastMessage.reference)
    }

}

关于ios - 向上滚动 tableView 的无限滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48567985/

相关文章:

ios - 从 Document 目录加载多个图像时 UICollectionView 卡住

ios - 如何让 UIView 在 Interface Builder 中显示其导航 Controller 的导航栏

ios - 当应用程序处于后台(iOS7)时,它不会在推送通知中打开

ios - Swift - 如何实现 "like post"

iOS:如何在屏幕上对控件进行分组,例如在“设置”中?

objective-c - UIPopOverView 问题中的 TableView

ios - UITableView 标题 View 调整大小

ios - 如何在cocos2d中添加iPhone5支持

ios - 在 UITableViewController textfield.becomeFirstResponder() 中不滚动 tableview

swift 3 : Get Value from Array[Int] in UITableView