滚动到顶部加载更多

时间:2016-03-17 20:05:37

标签: ios swift uiscrollview swift2 infinite-scroll

我一直在搜索,但我找不到一个明确的方法来创建一个滚动到顶部加载更多,或无限滚动,就像你在聊天中看到的那样,例如whatsapp。 我正在尝试使用 scrollViewDidScroll 方法,根据当前页面再次加载数据

    if self.tableView.contentOffset.y == 0 {
        loadData(++currentPage, itemsPerPage: pageSize)
    }

但处理新数据和滚动位置的方式对我来说有点奇怪,所以主要问题是在我的UITableView顶部以有效的方式添加内容

//更新

在ScrollViewDidScroll方法中:

在contentOffset.y到达0位置之后,我试图添加新消息,因为它必须出现在UITableView的顶部,因此在索引0处插入消息是我找到的唯一方法。但有一件事,在拉动新数据并重新加载UITableView后,滚动位置仍然显示在可见屏幕上,最后拉出的消息在顶部。这不是预期的行为,看看这个松弛的通道pic

enter image description here

当滚动到达正确的偏移量时,会拉出新数据,并在同一条消息上显示它,但现在查看滚动位置

所以,我认为在这种情况下重新加载整个表视图是个问题,但是如何正确地拉取tableView中的数据以获得这种预期的滚动行为呢?

例如在whatsapp中它是相同的

1 个答案:

答案 0 :(得分:-3)

我建议在UITableView委托方法

中进行预取
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

      //your code ()
          if indexPath.row == datasource.count - 3 {
            loadMore()
         }   
     }

这使您可以避免滚动视图的奇怪行为。