我有以下函数被调用以添加消息:
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/