2016-03-17 70 views
3

我一直在寻找很多,但我没有找到明确的方法来创建一个滚动到顶部加载更多,或无限滚动,就像你在聊天中看到的一样,例如whatsapp。 使用scrollViewDidScroll方法我是想,负载数据再次基于当前页面滚动到顶部加载更多

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

但处理新数据和滚动位置对我来说这有点不可思议,所以主要的问题是在增加内容的方式上有效的方式,在我的UITableView顶部

//更新

在ScrollViewDidScroll方法:contentOffset.y达到0 POSITI

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

enter image description here

当滚动达到适当的偏移,新的数据被拉扯,并筛选它是在相同的消息,但现在看起来滚动位置

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

e.g在WhatsApp的是相同的

+0

我从来没有在这个问题上工作过。听起来很有趣。什么不适合你?您无法检测到用户何时滚动到顶部或无法将更多内容添加到视图顶部? – garricn

+0

所以主要问题是以有效的方式添加内容,在我的UITableView的顶部 – Steve

+0

你有没有想过?我正在处理类似的问题。 – goldengil

回答

-2

我建议作出的UITableView委托的方法

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

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

这可以让你避免滚动视图的怪异的行为预取。

+0

但是,这将工作为滚动底部加载更多,达到关闭最后一个单元格,我试图做到这一点在滚动顶部,就像whatsapp聊天 – Steve

+0

对不起,错过了这一点。是的,那么你真的不得不依靠tableView的偏移量。您可以订阅胶印的更改与KVO – alex

+1

订阅胶印的变化是没有问题的,因为我使用UITableView,棘手的部分它是如何处理数据,并添加在顶部 – Steve