mirror of
https://github.com/MessageKit/MessageKit.git
synced 2026-02-06 19:03:19 +00:00
43 lines
1.9 KiB
Markdown
43 lines
1.9 KiB
Markdown
# MessagesDataSource
|
|
|
|
The `MessagesDataSource` is responsible for returning all forms of data for the `MessageCollectionViewCell`. This includes the number of cells in the `MessageCollectionView`, the `MessageType` for each cell, the `Avatar` to be used for the `AvatarView`, the current `Sender` of each message, and finally the `NSAttributedString` text for the `cellTopLabel` and `cellBottomLabel` of each cell.
|
|
|
|
The `MessagesDataSource` requires that you implement the following 3 methods:
|
|
|
|
```Swift
|
|
func currentSender() -> Sender
|
|
|
|
func messageForItem(at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> MessageType
|
|
|
|
func numberOfMessages(in messagesCollectionView: MessagesCollectionView) -> Int
|
|
```
|
|
|
|
### Providing an avatar image for AvatarView
|
|
|
|
```Swift
|
|
func avatar(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> Avatar
|
|
```
|
|
You can use the `avatar` method to return an `Avatar` object containing the image you want to display in the `AvatarView`.
|
|
The `Avatar` type has the following 2 properties:
|
|
|
|
### Avatar
|
|
```Swift
|
|
public struct Avatar {
|
|
public let image: UIImage?
|
|
public var initials: String = "?"
|
|
}
|
|
```
|
|
|
|
If no image is provided then the `AvatarView` will generate a placeholder image using the specified initials of the `Avatar`. The default value of this method returns an `Avatar` with initials of "?".
|
|
|
|
|
|
### Providing cellTopLabel text & cellBottomLabelText
|
|
```Swift
|
|
func cellTopLabelAttributedText(for message: MessageType, at indexPath: IndexPath) -> NSAttributedString?
|
|
|
|
func cellBottomLabelAttributedText(for message: MessageType, at indexPath: IndexPath) -> NSAttributedString?
|
|
```
|
|
The `cellTopLabelAttributedText` & `cellBottomLabelAttributedText` methods both default to `nil`. If these methods return `nil` the label will have a size of `.zero` in the `MessageCollectionViewCell`.
|
|
|
|
|