2016-09-06 4 views
2

私はチャットアプリを作ろうとしていて、JSQMessagesViewControllerライブラリを使用しています。 マイチャットビューでは、すべてのメッセージの日付と時刻が表示されますが、私はこのライブラリに少し問題があります。 私の問題は、メッセージの日付を1回だけ表示したいということです。 と仮定します。 昨日の日付が10件のメッセージ と、今日の日付が15件のメッセージJSQMessagesViewControllerでメッセージの日付を表示するには

が含まれていると私はしたいが含まれているこれを行うには、このメソッドを使用し、すべてのメッセージenter image description here

答えて

3

メッセージがその日の最初のものかどうかを判断する必要があります。その後、新しい日まで他のすべてのためにnilを返します。

自分のメッセージがその個人によって最初に送信されたものかどうかを判断する関数を作成しました。これは次のようになります

func firstMessageOfTheDay(indexOfMessage: NSIndexPath) -> Bool { 
    let messageDate = messages[indexOfMessage.item].date 
    guard let previouseMessageDate = messages[indexOfMessage.item - 1].date else { 
    return true // because there is no previous message so we need to show the date 
    } 
    let day = Calendar.current.component(.day, from: messageDate) 
    let previouseDay = Calendar.current.component(.day, from: previouseMessageDate) 
    if day == previouseDay { 
     return false 
    } else { 
     return true 
    } 
} 

それを適切な関数で呼び出します。あなたが他の質問があれば教えてください。

+0

ありがとうございましたダニエルその本当に完璧な答え –

+0

私はそれが助けてうれしいです –

+0

こんにちはUmesh、表示日の全体のコードを投稿できますか?私はあなたのようにする方法を見つけることができません –

1

の日付を繰り返さないよう、これらのメッセージの唯一の単一の日付を示しています。

func collectionView(collectionView: JSQMessagesCollectionView, attributedTextForCellTopLabelAtIndexPath indexPath: NSIndexPath) -> NSAttributedString? { 

日付が異なる場合は、前のメッセージの日付の戻り日付で、そうでない場合はnilを返す必要があります。

関連する問題