2017-05-27 51 views
1

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

+0

你想在哪裏使用這個indexPath?你沒有提供足夠的信息。 – Adeel

+0

我想在我的問題中包含的'setupIncomingBubble()'函數中使用它。謝謝你的幫助! – KingTim

回答

0

使用索引路徑使用super關鍵字&它將繼承indexpathCollectionView

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

謝謝,我給了這個鏡頭,並得到了一些錯誤(索引路徑上未解決的標識符) - 我編輯我的問題,以顯示我現在的全部功能。 – KingTim

相關問題