2017-02-21 102 views
0

在我的聊天视图控制器的viewDidLoad中,我写了self.appDelegate.client?.historyForChannel(currentChannel, start: nil, end: nil, limit: 20, withCompletion:,它检索了20条最近的消息。不过,我希望在最近20条消息之前检索早期/旧消息,以获得无限滚动功能。我怎样才能做到这一点?Swift + Pubnub聊天应用加载滚动的旧消息

+0

您可否在您的问题中详细说明“我需要检索另外20条消息”部分!哪20条消息? –

+0

说消息历史有40条消息,viewDidLoad检索消息[0]〜[19],我将如何检索[20]〜[39]? –

回答

3

商店从Pubnub历史收到的第一条消息的时间戳接收未来20个消息:

self.client?.historyForChannel(channel, start: lastStoredTimstamp, end: nil, limit: 20, reverse: false, withCompletion:

我已经测试过它,它工作得很好。

小说明: 仅使用start参数总是返回比提供的时间标记更早的消息。如果你设置reverse = true,你会得到比所提供的时间标记更新的消息。

请参阅https://www.pubnub.com/docs/swift/storage-and-history PubNub历史API如何与时间线图一起工作。

0

它可以通过UIScrollViewDelegate完成(在你的情况,这是内部的UITableView)

首先,设置你的UITableView的代表。

然后,你必须重写scrollViewDidScroll(_ scrollView: UIScrollView),这是一个示例代码:

let currentOffset = scrollView.contentOffset.y 
let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height 

let deltaOffset = maximumOffset - currentOffset 
if (deltaOffset <= 0) 
    // call to self.appDelegate.client?.historyForChannel with the offsets 
) 

的,如果当你已经达到到列表的底部表达会罢工。

self.appDelegate.client?.historyForChannel包含开始&结束偏移量。可以通过在每次调用historyForChannel后加上+20(在某处声明一个类变量)来计算开始时间,但只有响应中的对象没有某些唯一ID时才能起作用。

+0

问题是'start'和'end'是NSNumbers,它们应该是日期。这就是为什么我不能为每个卷轴做简单的+20 –