在类方法之外获取集合视图的 indexPath (JSQMessagesViewController)



我正在尝试为聊天气泡设置自定义颜色,具体取决于发送消息的人的性别。为传出气泡执行此操作很容易,我只需使用 switch 语句并检查我的性别字典以获取当前用户 uid 的值。这很好,因为传出的气泡将始终是相同的颜色。

但是,对于传入的气泡,这更加困难,因为它是群聊,并且颜色/性别会根据发送消息的人而有所不同。

我认为我需要的是获取消息的索引路径,就像在类方法(例如头像函数)中一样,我可以说

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

使用超级关键字使用索引路径,它将继承indexpathCollectionView

let cell: JSQMessagesCollectionViewCell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! JSQMessagesCollectionViewCell
let msg: JSQMessage = self.messages[indexPath.item]

最新更新