ios - 滚动到顶部加载更多

标签 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 后,滚动位置仍然显示在可见屏幕上,最后拉取的消息在顶部。这不是预期的行为,看看这张松弛的 channel 图片

enter image description here

当滚动达到适当的偏移量时,将拉取新数据,并将其显示在同一消息上,但现在看起来是滚动位置

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

例如在 whatsapp 中是一样的

最佳答案

我建议在 UITableView 委托(delegate)的方法中进行预取

    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

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

这可以让您避免 ScrollView 的奇怪行为。

关于ios - 滚动到顶部加载更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36070664/

相关文章:

ios - swift:保持 ViewController 处于完全相同的状态

ios - 尝试显示 Flurry 横幅广告时出现未知错误

swift - 如何正确出列代码中的字幕 UITableViewCell?

Swift - 编码和解码字典 [String :Any] into plist

objective-c - UIScrollView setContentSize 因未捕获的 NSRangeException 而崩溃

ios - 翔升 : asl_search() can't get logs write by asl_log()

ipad - 为什么我无法在应用程序崩溃的情况下释放我的 CTFramesetter?

ios - 如何从 swift 访问 Objective C 混淆类

ios - UIScrollVIew 中的静态对象

ios - iOS上UIscrollView滑动手势+UIButton手指向下效果