Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 25 additions & 12 deletions docs/uikit/chatuikit/ios/chatuikit_custom_cell.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# 实现新类型自定义消息 Cell
# 实现新类型的自定义消息 Cell

本文以红包消息为例介绍如何添加一种新类型的自定义消息 Cell。

1. 根据需求继承 `EaseChatUIKit` 中的自定义消息 Cell。
## 步骤一 继承自定义消息 Cell

根据需求继承 `EaseChatUIKit` 中的自定义消息 Cell。

```Swift
import UIKit
Expand Down Expand Up @@ -31,7 +33,9 @@ class RedPackageCell: CustomMessageCell {

```

2. 根据需求继承 `EaseChatUIKit` 中的 Cell 的渲染模型 `MessageEntity`,并指定气泡大小,其中 `redPackageIdentifier` 为红包的自定义消息的 event事件。
## 步骤二 继承 Cell 的渲染模型

根据需求继承 `EaseChatUIKit` 中的 Cell 的渲染模型 `MessageEntity`,并指定气泡大小,其中 `redPackageIdentifier` 为红包的自定义消息的 `event` 事件。

```Swift
import UIKit
Expand Down Expand Up @@ -64,17 +68,19 @@ final class MineMessageEntity: MessageEntity {
}
```

3. 添加发送附件消息的类型。
## 步骤三 添加附件消息类型

例如,增加发送红包消息
添加附件消息的类型,例如,增加红包消息

```Swift

let redPackage = ActionSheetItem(title: "红包".chat.localize, type: .normal,tag: "Red",image: UIImage(named: "photo", in: .chatBundle, with: nil))
Appearance.chat.inputExtendActions.append(redPackage)
```

4. 在继承的 `MessageListController` 处理新增的附件消息类型的点击。
## 步骤四 处理新增的附件消息类型的点击事件

继承 `MessageListController`,处理新增的附件消息类型的点击事件。

```Swift
class CustomMessageListController: MessageListController {
Expand All @@ -101,9 +107,11 @@ let redPackageIdentifier = "redPackage"

```

![img](/images/uikit/chatuikit/ios/configurationitem/chat/red_package_attachment.png)
![img](/images/uikit/chatuikit/ios/configurationitem/chat/red_package_attachment.png =350x750)

5. 给 `EaseChatUIKit` 中的 `MessageListViewModel` 增加发送红包消息的方法。
## 步骤五 增加发送新类型附件消息的方法

在 `EaseChatUIKit` 的 `MessageListViewModel` 中增加发送红包消息的方法。

```Swift
extension MessageListViewModel {
Expand Down Expand Up @@ -135,9 +143,11 @@ extension MessageListViewModel {

```

![img](/images/uikit/chatuikit/ios/configurationitem/chat/red_package_send.png)
![img](/images/uikit/chatuikit/ios/configurationitem/chat/red_package_send.png =350x750)

## 步骤六 注册继承的对象

6. 将上述继承的对象初始化后,在 `EaseChatUIKit`中进行注册。
将上述继承的对象初始化后,在 `EaseChatUIKit` 中进行注册。

```Swift

Expand All @@ -147,7 +157,10 @@ extension MessageListViewModel {
ComponentsRegister.shared.registerCustomizeCellClass(cellType: RedPackageCell.self)
```

- 这里 `ComponentsRegister.shared.Conversation = MineConversationInfo.self` 是为了修改自定义消息在会话列表中。会话收到新消息时显示的内容这里暂定为显示 "[红包]",示例代码如下,主要更改在非文本消息类型的 `else` 中根据自定义消息的 `event` 显示对应的内容。
这里的 `ComponentsRegister.shared.Conversation = MineConversationInfo.self` 用于在会话列表中展示收到的新类型的自定义消息内容。

例如,在以下示例代码中,会话中收到新消息时显示为 "[红包]",主要调整了在非文本消息类型的 `else` 中根据自定义消息的 `event` 显示对应的内容。

```Swift
import UIKit
import EaseChatUIKit
Expand Down Expand Up @@ -222,4 +235,4 @@ final class MineConversationInfo: ConversationInfo {

```

![img](/images/uikit/chatuikit/ios/configurationitem/chat/red_package_receive.png)
![img](/images/uikit/chatuikit/ios/configurationitem/chat/red_package_receive.png =350x750)