在swift

时间:2016-06-17 20:17:08

标签: swift timestamp jsqmessagesviewcontroller

如何更改时间戳逻辑以避免重复次数,如下面的屏幕截图所示?

这是我的代码..

覆盖func collectionView(collectionView:JSQMessagesCollectionView!,attributedTextForCellTopLabelAtIndexPath indexPath:NSIndexPath!) - > NSAttributedString! {

    if indexPath.item % 3 == 0 {

        let message = messages[indexPath.item]

        return JSQMessagesTimestampFormatter.sharedFormatter().attributedTimestampForDate(message.date)
    }
    return nil
}

override func collectionView(collectionView: JSQMessagesCollectionView!, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout!, heightForCellTopLabelAtIndexPath indexPath: NSIndexPath!) -> CGFloat {

    if indexPath.item % 3 == 0 {
        return kJSQMessagesCollectionViewCellLabelHeightDefault
    }
    return 0.0
}

enter image description here

1 个答案:

答案 0 :(得分:1)

如果我们比较之前的消息日期也是当前消息日期,我们只能在时间变化时显示。如果您想要或删除它,您可以保留每三条消息

 if indexPath.item % 3 == 0 {          //optional

  let previousMessage = messages[indexPath.item - 1]
  let message = messages[indexPath.item]
    if message.date == previousMessage {
      return JSQMessagesTimestampFormatter.sharedFormatter().attributedTimestampForDate(message.date)
    else { 
      return nil
    }
  }
return nil

您可能需要确保它不是第一条消息,因为消息[indexPath.item - 1]将超出范围。但除此之外它应该解决你的问题。祝你好运