我有一个聊天消息应用程序,它从最早到最新加载我的消息,然后自动滚动到底部以便用户看到最新的。
我只加载了 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/