我试图为聊天气泡设置自定义颜色,具体取决于发送消息的人的性别。这样做对于即将离任的泡沫很简单,我只需使用switch语句并检查我的性别字典中当前用户的uid的值。这很好,因为即将离任的泡泡将始终是相同的颜色。在类方法之外获取集合视图的indexPath(JSQMessagesViewController)
但是,对于传入的泡泡来说,它更困难,因为它是一个群组聊天,颜色/性别会根据发送消息的人而有所不同。
我想我需要的是让消息的索引路径,就像在类中的方法(如头像功能),在那里我可以说
let message = messages[indexPath.row]
,然后更改基于颜色那样,有类似
private func setupIncomingBubble() -> JSQMessagesBubbleImage {
// How to get indexPath to use in here????
let message = messages[indexPath.row]
let gender = genderDictionary.value(forKey: message.senderId)
switch gender {
case "male":
return JSQMessagesBubbleImageFactory().incomingMessagesBubbleImage(with: UIColor(hexString: "2573C5"))
case "female":
return JSQMessagesBubbleImageFactory().incomingMessagesBubbleImage(with: UIColor(hexString: "E452CE"))
default:
return JSQMessagesBubbleImageFactory().incomingMessagesBubbleImage(with: UIColor(hexString: "848484"))
}
}
但是我不知道如何获得此类索引路径以外的类方法。这是可能的,还是我需要采取单独的方法?
编辑:
private func setupIncomingBubble() -> JSQMessagesBubbleImage {
let cell: JSQMessagesCollectionViewCell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! JSQMessagesCollectionViewCell
let message: JSQMessage = self.messages[indexPath.item]
let gender = genderDictionary.value(forKey: message.senderId)
switch gender {
case "male":
return JSQMessagesBubbleImageFactory().incomingMessagesBubbleImage(with: UIColor(hexString: "2573C5"))
case "female":
return JSQMessagesBubbleImageFactory().incomingMessagesBubbleImage(with: UIColor(hexString: "E452CE"))
default:
return JSQMessagesBubbleImageFactory().incomingMessagesBubbleImage(with: UIColor(hexString: "848484"))
}
}
误差上let cell
和let message
线, “使用未解决的标识符indexPath的”
你想在哪里使用这个indexPath?你没有提供足够的信息。 – Adeel
我想在我的问题中包含的'setupIncomingBubble()'函数中使用它。谢谢你的帮助! – KingTim