2017-02-21 33 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 –