Show only temporary cell day by day ;
With @cerenali answer, we may have problems with dates that have different days but are close. How:
msgDate1 = 31/03/2016 23:55 msgDate2 = 01/04/2016 00:07
to handle this, I replaced the logic inside the if with:
BOOL checkTime = message.date.year != previousMessage.date.year || message.date.month != previousMessage.date.month || message.date.day != previousMessage.date.day;
and the final code will be:
JSQMessage *message = [self.messages objectAtIndex:indexPath.item]; if (indexPath.item == 0) { return [[JSQMessagesTimestampFormatter sharedFormatter] attributedTimestampForDate:message.date]; } if (indexPath.item - 1 > -1) { JSQMessage *previousMessage = [self.messages objectAtIndex:indexPath.item - 1]; BOOL checkTime = message.date.year != previousMessage.date.year || message.date.month != previousMessage.date.month || message.date.day != previousMessage.date.day; if (checkTime) { return [[JSQMessagesTimestampFormatter sharedFormatter] attributedTimestampForDate:message.date]; } }
Note. I am using DateTools in my project.
source share