我試圖爲聊天氣泡設置自定義顏色,具體取決於發送消息的人的性別。這樣做對於即將離任的泡沫很簡單,我只需使用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