JSQMessages TextForMessageBubbleTopLabel,swift

时间:2017-02-17 22:32:58

标签: ios firebase swift3 jsqmessagesviewcontroller

我做了一些关于如何在JSQMessage上的消息气泡上方显示发件人姓名的研究,但没有任何东西显示在气泡之上。下面是我的代码:消息工作正常,它只是显示名称。建议?

func collectionView(collectionView: JSQMessagesCollectionView!, attributedTextForMessageBubbleTopLabelAtIndexPath indexPath: NSIndexPath!) -> NSAttributedString! {
    let message = messages[indexPath.item];

    // Sent by me, skip
    if message.senderId == senderId {
        return nil;
    }

    // Same as previous sender, skip
    if indexPath.item > 0 {
        let previousMessage = messages[indexPath.item - 1];
        if previousMessage.senderId == message.senderId {
            return nil;
        }
    }

    return NSAttributedString(string:message.senderId)
}

func collectionView(collectionView: JSQMessagesCollectionView!, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout!, heightForMessageBubbleTopLabelAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
    let message = messages[indexPath.item]

    // Sent by me, skip
    if message.senderId == senderId {
        return CGFloat(0.0);
    }

    // Same as previous sender, skip
    if indexPath.item > 0 {
        let previousMessage = messages[indexPath.item - 1];
        if previousMessage.senderId == message.senderId {
            return CGFloat(0.0);
        }
    }

    return kJSQMessagesCollectionViewCellLabelHeightDefault
}

1 个答案:

答案 0 :(得分:0)

您没有使用正确的方法签名,它们应该是库中重写的方法。

更改

 func collectionView(collectionView: JSQMessagesCollectionView!, attributedTextForMessageBubbleTopLabelAtIndexPath indexPath: NSIndexPath!) -> NSAttributedString! {

到 - >

override func collectionView(_ collectionView: JSQMessagesCollectionView, attributedTextForMessageBubbleTopLabelAt indexPath: IndexPath) -> NSAttributedString? {

和这个

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

到 - >

override func collectionView(_ collectionView: JSQMessagesCollectionView, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout, heightForMessageBubbleTopLabelAt indexPath: IndexPath) -> CGFloat {

如果您需要更多帮助,请与我们联系。