2016-09-06 2 views
2

채팅 앱을 만들려고하고 JSQMessagesViewController 라이브러리를 사용하고 있습니다. 내 채팅보기는 날짜와 시간이 포함 된 모든 메시지를 표시하지만이 라이브러리에 약간의 문제가 있습니다. 제 문제는 메시지 날짜를 한 번만 보여주고 싶다는 것입니다. 가정하자 : 어제 날짜는 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을 반환해야합니다.

관련 문제