如何在JSQMessagesViewController

时间:2016-09-06 05:57:45

标签: ios swift date chat jsqmessagesviewcontroller

我正在尝试制作聊天应用,我正在使用JSQMessagesViewController库。 我的聊天视图显示所有消息及其日期和时间,但我正面临着这个库的一些问题。 我的问题是我只想显示消息日期一次。 假设: 昨天的日期包含10条消息 今天的日期包含15条消息

我想显示这些消息的唯一日期,因为不是每条消息的重复日期enter image description here

2 个答案:

答案 0 :(得分:4)

您需要确定该消息是否是当天的第一天。然后为所有其他人返回零,直到新的一天。

我创建了一个函数来确定我的消息是否是该个人首先发送的消息。看起来像这样

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
    }
}

然后在适当的函数中调用它。希望如果您有任何其他问题,请帮助我。

答案 1 :(得分:1)

使用此方法执行此操作。

 df1<- structure(list(datetime = structure(c(1073098800, 1073131200, 
    1073142000, 1073163600, 1073703600, 1073736000, 1073746800, 1073768400, 
    1073790000, 1073822400), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
        value = c(NA, NA, NA, -12.7, -12.9, -7.9, -6.2, -14, -11.7, 
        NA)), .Names = c("datetime", "value"), row.names = c(NA, 
    10L), class = "data.frame")

如果日期与上一个消息日期返回日期不同,您必须检查消息日期,否则您希望以哪种格式返回nil。