2017-05-27 102 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

相关问题