JSQMessageViewController 实现
JSQMessageViewController Implementation
我已经集成了用于聊天的 JSQMessagesViewController,我在区分发送者和接收者消息显示的右侧和左侧时遇到了问题。我该如何解决这个问题?
override func collectionView(_ collectionView: JSQMessagesCollectionView, messageBubbleImageDataForItemAt indexPath: IndexPath) -> JSQMessageBubbleImageDataSource {
return messages[indexPath.item].senderId == self.senderId ? outgoingBubble : incomingBubble
}
聊天控制器配置:
1): 如果您使用的是 JSQMessagesViewController,那么您的聊天控制器应该继承自 JSQMessagesViewController。
2): JSQMessagesViewController 具有名称 senderId、senderDisplayName、myImage 的属性。因此,您将这些属性分配给登录用户 ID、显示名称和图像(self.senderId = loginUser.id 等),因为登录用户是发件人。
self.senderId = loginUser.uniqueId;
self.displayName = loginUser.dispalyName; // if you have
self.otherImage = [[JSQMessagesAvatarImage alloc]
initWithAvatarImage:"loginUserImage if you have"
highlightedImage:"highlitedImage if you have"
placeholderImage:"placeholder image if you have"];
3): JSQMessagesViewController 也有名称为otherImage 的属性。所以您应该将此 属性 分配给您喜欢聊天的其他用户图像。
self.otherImage = [[JSQMessagesAvatarImage alloc]
initWithAvatarImage:"userImage if you have"
highlightedImage:"highlitedImage if you have"
placeholderImage:"placeholder image if you have"];
注意:您应该在 viewDidLoad() 或 viewWillAppear() 中执行此配置。此代码在 objective-C 中,因此您可以相应地使用。
希望对您有所帮助。
您应该首先在 self.senderId
中设置您自己的 userId
作为进入 else 部分的 messageBubbleImageDataForItemAt 中的条件。这就是为什么所有气泡只显示在左侧的原因。
我已经集成了用于聊天的 JSQMessagesViewController,我在区分发送者和接收者消息显示的右侧和左侧时遇到了问题。我该如何解决这个问题?
override func collectionView(_ collectionView: JSQMessagesCollectionView, messageBubbleImageDataForItemAt indexPath: IndexPath) -> JSQMessageBubbleImageDataSource {
return messages[indexPath.item].senderId == self.senderId ? outgoingBubble : incomingBubble
}
聊天控制器配置:
1): 如果您使用的是 JSQMessagesViewController,那么您的聊天控制器应该继承自 JSQMessagesViewController。
2): JSQMessagesViewController 具有名称 senderId、senderDisplayName、myImage 的属性。因此,您将这些属性分配给登录用户 ID、显示名称和图像(self.senderId = loginUser.id 等),因为登录用户是发件人。
self.senderId = loginUser.uniqueId;
self.displayName = loginUser.dispalyName; // if you have
self.otherImage = [[JSQMessagesAvatarImage alloc]
initWithAvatarImage:"loginUserImage if you have"
highlightedImage:"highlitedImage if you have"
placeholderImage:"placeholder image if you have"];
3): JSQMessagesViewController 也有名称为otherImage 的属性。所以您应该将此 属性 分配给您喜欢聊天的其他用户图像。
self.otherImage = [[JSQMessagesAvatarImage alloc]
initWithAvatarImage:"userImage if you have"
highlightedImage:"highlitedImage if you have"
placeholderImage:"placeholder image if you have"];
注意:您应该在 viewDidLoad() 或 viewWillAppear() 中执行此配置。此代码在 objective-C 中,因此您可以相应地使用。 希望对您有所帮助。
您应该首先在 self.senderId
中设置您自己的 userId
作为进入 else 部分的 messageBubbleImageDataForItemAt 中的条件。这就是为什么所有气泡只显示在左侧的原因。