0

私のチャットビューコントローラのviewDidLoadで、私はself.appDelegate.client?.historyForChannel(currentChannel, start: nil, end: nil, limit: 20, withCompletion:を書いて、最近の20のメッセージを取得します。しかし、私は無制限のスクロール機能のためにこれらの最近の20のメッセージの前に古い/古い20のメッセージを取り出すことを望みます。これどうやってするの?それはUIScrollViewDelegateを介して行うことができますSwift + Pubnub chatアプリがスクロールのための古いメッセージをロードする

+0

質問で「別の20個のメッセージを取得する必要があります」と説明できますか?どの20メッセージ? –

+0

メッセージの履歴には40のメッセージがあり、viewDidLoadはメッセージ[0]〜[19]を取得しますが、どのように[20]〜[39]を取得しますか? –

答えて

3

ストア:

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

(あなたのケースでは、それはの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がない場合にのみ動作します。あなたはPubnub履歴から受信した最初のメッセージのタイムスタンプは次の20のメッセージを受信する

+0

問題は、 'start'と' end'はNSNumbersであり、それらは日付でなければなりません。それで、私は各スクロールのために単純な+20をすることができません –

関連する問題