iOS(SwiftUI)

最近更新时间:2026-01-16 17:36:47

我的收藏

组件概述

ContactList 是基于 SwiftUI 构建的联系人列表组件,为用户提供完整的联系人管理功能。该组件支持好友列表展示、好友申请处理、群组列表管理、黑名单管理等功能,并提供了丰富的交互回调接口。
联系人列表
群组列表
好友申请列表




组件集成

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

组件构成

ContactList 是联系人列表里的主组件,对应着整个联系人列表页框架,提供了一个对外的初始化 init 方法:
方法名
参数
描述
init
contactStore: ContactListStore
联系人数据存储,默认请使用 ContactListStore.create() 创建
onContactClick: ((AZOrderedListItem) -> Void)?
点击联系人的回调,可选参数
onGroupClick: ((AZOrderedListItem) -> Void)?
点击群组的回调,可选参数
ContactList 上半部分预留了各个子视图的入口 cell,例如好友申请、群聊申请、群组列表和黑名单列表。下半部分内嵌了联系人列表,如下图所示:

ContactList 已内置子页面导航逻辑,点击好友申请、群组申请、群组列表、黑名单等入口时,会自动以全屏弹窗(fullScreenCover)的方式打开对应的子页面,无需您手动处理导航跳转。
如果您需要单独使用子页面(如好友申请列表、群组列表等),各子页面提供了独立的 init 方法,详情如下:
子页面
方法名
参数
描述
好友申请页(FriendApplicationListView)
init
contactStore: ContactListStore
联系人数据存储,从 ContactList 传过来
onDismiss: (() -> Void)?
关闭页面的回调,可选参数
群组申请页(GroupApplicationListView)
init
contactStore: ContactListStore
联系人数据存储,从 ContactList 传过来
onDismiss: (() -> Void)?
关闭页面的回调,可选参数
群组列表页
(GroupListView)
init
contactStore: ContactListStore
联系人数据存储,从 ContactList 传过来
onGroupClick: ((AZOrderedListItem) -> Void)?
点击群组列表页里的群组的回调,可选参数
onDismiss: (() -> Void)?
关闭页面的回调,可选参数
黑名单列表页
(BlackListView)
init
contactStore: ContactListStore
联系人数据存储,从 ContactList 传过来
onDismiss: (() -> Void)?
关闭页面的回调,可选参数

基础用法

快速集成

ContactList 已内置子页面导航,您只需简单初始化即可获得完整的联系人管理功能:
import AtomicX
import SwiftUI

struct ContactsPage: View {
private let contactStore = ContactListStore.create()
var body: some View {
ContactList(
contactStore: contactStore,
onContactClick: { contact in
// 处理联系人点击
print("点击联系人: \\(contact.title)")
},
onGroupClick: { group in
// 处理群组点击(从群组列表页点击群组时触发)
print("点击群组: \\(group.title)")
}
)
}
}
点击好友申请、群组申请、群组列表、黑名单等入口时,组件会自动以全屏弹窗的方式打开对应子页面,无需额外处理导航逻辑。跳转示意图如下:


集成要点说明

内置导航

ContactList 内置了子页面导航逻辑,使用 fullScreenCover 方式呈现子页面:
好友申请页(FriendApplicationListView)
群组申请页(GroupApplicationListView)
群组列表页(GroupListView)
黑名单列表页(BlackListView)
您无需手动管理导航状态或配置 NavigationLink。

回调处理

ContactList 提供两个可选回调:
ContactList(
contactStore: contactStore,
onContactClick: { contact in
// 点击联系人列表中的联系人时触发
},
onGroupClick: { group in
// 点击群组列表中的群组时触发
}
)

数据共享

使用 ContactListStore.create() 创建数据存储实例,组件内部会自动将该实例传递给所有子页面,确保数据一致性:
private let contactStore = ContactListStore.create()

单独使用子页面

如果您需要在其他场景单独使用子页面,可以直接初始化对应的视图:
// 单独使用群组列表页
GroupListView(
contactStore: contactStore,
onGroupClick: { group in
print("点击群组: \\(group.title)")
},
onDismiss: {
// 关闭页面
}
)