2016-09-06 3 views
2

Я пытаюсь сделать приложение чата, и я использую библиотеку JSQMessagesViewController. My Chat View показывает все сообщения с указанием даты и времени, но я столкнулся с некоторой проблемой в этой библиотеке. Моя проблема в том, что я хочу показать дату передачи только один раз. Предположим: дата Вчера содержит 10 сообщений и дата сегодня содержит 15 сообщенийКак показать дату сообщения в JSQMessagesViewController

, и я хочу показать только одну дату из этих сообщений не повторять даты для каждого сообщения enter image description here

ответ

3

Ну, вам нужно определить, является ли сообщение первым в этот день. Затем верните ноль всем остальным до нового дня.

Я создал функцию, чтобы определить, было ли мое сообщение первым отправлено этим человеком. Это выглядит так:

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? { 

Вы должны проверить дату сообщения, если дата отличается от предыдущей даты возврата даты, в каком формате вы хотите иначе указать нуль.