我一直在搜索,但我找不到一个明确的方法来创建一个滚动到顶部加载更多,或无限滚动,就像你在聊天中看到的那样,例如whatsapp。 我正在尝试使用 scrollViewDidScroll 方法,根据当前页面再次加载数据
if self.tableView.contentOffset.y == 0 {
loadData(++currentPage, itemsPerPage: pageSize)
}
但处理新数据和滚动位置的方式对我来说有点奇怪,所以主要问题是在我的UITableView顶部以有效的方式添加内容
//更新
在ScrollViewDidScroll方法中:
在contentOffset.y到达0位置之后,我试图添加新消息,因为它必须出现在UITableView的顶部,因此在索引0处插入消息是我找到的唯一方法。但有一件事,在拉动新数据并重新加载UITableView后,滚动位置仍然显示在可见屏幕上,最后拉出的消息在顶部。这不是预期的行为,看看这个松弛的通道pic
当滚动到达正确的偏移量时,会拉出新数据,并在同一条消息上显示它,但现在查看滚动位置
所以,我认为在这种情况下重新加载整个表视图是个问题,但是如何正确地拉取tableView中的数据以获得这种预期的滚动行为呢?
例如在whatsapp中它是相同的
答案 0 :(得分:-3)
我建议在UITableView委托方法
中进行预取 func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
//your code ()
if indexPath.row == datasource.count - 3 {
loadMore()
}
}
这使您可以避免滚动视图的奇怪行为。