iOS(SwiftUI)

最近更新时间:2025-11-12 11:43:42

我的收藏

组件概述

ConversationList 是一个基于 SwiftUI 构建的会话列表组件,主要用于展示和管理用户的聊天会话。该组件提供了完整的会话列表功能,包括会话展示、交互操作等核心能力。
会话列表
会话操作



组件集成

ConversationList 是属于 TUIKit SwiftUI 的一个组件,集成 TUIKit SwiftUI 即可获取并使用 ConversationList,集成方法请参考文档 TUIKit SwiftUI 里的集成步骤。

组件构成

ConversationList 组件对外仅暴露了会话列表的初始化方法,其他逻辑均封装在 ConversationList 中。

对外方法

方法名
参数
描述
init
onConversationClick: @escaping (ConversationInfo) -> Void
初始化组件,设置会话点击回调,必填。
config: ConversationActionConfigProtocol = ChatConversationActionConfig()
初始化组件,设置会话操作菜单项,选填。
customActions: [ConversationCustomAction] = []
初始化组件,设置自定义会话操作选项,选填。

基础用法

ConversationList 组件可直接初始化使用,需要实现 onConversationClick 回调。
参数名
类型
描述
onConversationClick
(ConversationInfo) -> Void
会话点击回调,当用户点击某个会话 cell 时触发
示例代码如下:
import AtomicX
import SwiftUI

struct ContentView: View {
var body: some View {
ConversationList(
onConversationClick: { conversation in
// 这里建议导航到聊天页面
}
)
}
}

自定义组件

您可以自定义会话列表的操作项。方法如下。

方式 1. 局部隐藏会话操作项

初始化 ConversationList 时传入自定义 config,设置是否展示某些菜单项:
struct CustomConversationView: View {
var body: some View {
ConversationList(
onConversationClick: { conversation in
// 点击会话 cell 跳转
},
// 不展示 ClearHistory
config: ChatConversationActionConfig(isSupportDelete: true, isSupportPin: true, isSupportClearHistory: false)
)
}
}
目前支持的菜单项开关操作
操作类型
描述
isSupportDelete
是否支持删除会话
isSupportPin
是否支持置顶会话
isSupportClearHistory
是否支持清空历史消息

方式 2. 局部增加会话操作项

初始化 ConversationList 时传入 customActions,ConversationList 内部会在默认的 action 底部添加您增加的自定义选项:
参数名
类型
描述
customActions
[ConversationCustomAction]
自定义会话操作,当用户点击会话操作菜单时展示
示例代码如下:
struct CustomConversationView: View {
var body: some View {
ConversationList(
onConversationClick: { conversation in
onShowMessage?(NavigationInfo(conversation: conversation))
},
// Custom actions
customActions: [
ConversationCustomAction(title: "Share") { conversation in
print("Share conversation: \\(conversation.title ?? "")")
},
]
)
.conversationActions([.delete, .pin, .clearHistory])
.environmentObject(themeState)
}
}


方式 3. 全局配置方式

通过 AppBuilderConfig 进行全局配置:
// 在应用启动时配置,不包含则不支持
AppBuilderConfig.shared.conversationActionList = [
.delete, // 支持删除
.pin, // 支持置顶
.clearHistory // 清空会话消息
]

// 接下来再初始化 ConversationList,所有的 ConversationList 都会遵守上面 conversationActionList 的配置
ConversationList(
onConversationClick: { conversation in
// 这里可以导航到聊天页面
}
)
注意:
局部配置的优先级大于全局配置。
自定义效果如下图所示:
会话操作(默认选项)
会话操作(隐藏 Delete 选项)
会话操作(新增 Share 选项)