滚动桌面视图的无限滚动?

时间:2018-02-01 16:56:47

标签: 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)
}

然而,同样的问题。有没有更好的方法来处理这个?

1 个答案:

答案 0 :(得分:2)

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

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

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

}