我有一个聊天消息应用程序,它从最早到最晚加载我的消息,然后自动滚动到底部,以便用户看到最新消息。
我只加载了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)
}
然而,同样的问题。有没有更好的方法来处理这个?
答案 0 :(得分:2)
您应该注意,此方法被多次调用,您应该在使用新数据重新加载表后进行fetchingNow = false
,此外,当您加载新内容时,请不要滚动到最旧的内容那些并让用户向上滚动以查看剩余的
func scrollViewDidScroll(_ scrollView: UIScrollView) {
guard scrollView.contentOffset.y <= 0 else { return }
if(!fetchingNow)
{
fetchNextMessages(with: lastReference: lastMessage.reference)
}
}