ios - 如何使用 JSQMessageViewController 使发件人显示名称出现?

标签 ios swift jsqmessagesviewcontroller

我有以下函数被调用以添加消息:

    func addMessage(text: String, displayName: String) {
        let message = JSQMessage(senderId: "tester", displayName: displayName, text: text)
        messages.append(message)

        finishReceivingMessage()

}

然后在这个函数中

    override func collectionView(collectionView: JSQMessagesCollectionView!,
    messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData! {
        return messages[indexPath.item]
}

我返回该 indexPath 的消息日期。该消息正确显示,但没有显示名称。

最佳答案

我认为您缺少 attributedTextForMessageBubbleTopLabelAtIndexPath 应该看起来像这样

 override func collectionView(collectionView: JSQMessagesCollectionView?, attributedTextForMessageBubbleTopLabelAtIndexPath indexPath: NSIndexPath!) -> NSAttributedString! {
    let message = messages[indexPath.item]
    switch message.senderId {
    case CURRENTUSERID:
        return nil
    default:
        guard let senderDisplayName = message.senderDisplayName else {
            assertionFailure()
            return nil
        }
        return NSAttributedString(string: senderDisplayName)

    }
}

编辑:

还要确保使用此功能为标签赋予高度

override func collectionView(collectionView: JSQMessagesCollectionView!, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout!, heightForMessageBubbleTopLabelAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
   return 13 //or what ever height you want to give
}    

祝你好运🚀

关于ios - 如何使用 JSQMessageViewController 使发件人显示名称出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35999902/

相关文章:

ios - 如何使用掉落的图钉打开谷歌地图应用程序? - swift

ios - 如何使从 Firebase 数据库检索的值作为 Swift 中的变量?

ios - 将 Samplebuffer 快速保存到相机胶卷

ios - JSQMessagesViewController : my message doesn't Show up

ios - 通过聊天发送图像

ios - 更改 JSQMessagesViewController 的框架

objective-c - Ctrl-从按钮拖动到方法不起作用。 Xcode/界面生成器

ios - 如何计算发送/接收的字节数,包括 iOS HTTP 连接中的 TCP/IP 开销?

swift - 警告 : Attempt to present ViewController on ViewController which is already presenting ViewController

swift - SpriteNode 不出现某些情况