在我的聊天视图控制器的viewDidLoad中,我写了self.appDelegate.client?.historyForChannel(currentChannel, start: nil, end: nil, limit: 20, withCompletion:
并检索了20条最近的消息。但是,我希望在这些最近的20条消息之前检索早期/旧的20条消息,以获得无限滚动功能。我怎么能这样做?
答案 0 :(得分: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如何与时间线图配合使用。
答案 1 :(得分: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
)
当你到达列表的底部时,if表达式会出现。
self.appDelegate.client?.historyForChannel
包含start&amp;结束抵消。可以通过在每次调用historyForChannel
之后添加+20(在某处声明一个类变量)来计算Start,但只有当响应中的对象没有某些唯一ID时它才会起作用。