概述
本页介绍了适用于 iOS 版 Global IM UIKit 中所有关键函数及其视图控制器的基本概念和通用类。
设计模式
在 Global IM UIKit 中,主要的功能可聚合为两大页面:
-
会话列表页面:采用 MVVM 的代码架构:
- Model 层:
RCChatModel
是对 IMLibCore SDK 中RCConversation
的封装。 - View 层:
RCChatListViewController
视图控制器,根据功能拆分为RCChatListHeaderView
、RCChatListView` 等 UI 组件. - ViewModel 层:
RCChatListViewModel
提供会话数据相关的接口调用和回调,会话的加载、删除、置顶、标记已读等。
- Model 层:
-
会话页面采用 MVVM 的代码架构:
- Model:RCMessageModel 是对 IMLibCore 中 RCMessage 的封装;
- View:RCChatViewController 根据功能拆分为 RCChatHeaderView、RCMessageListView、RCInputBar 等组件;
- ViewModel:RCChatViewModel 提供会话消息数据相关的接口调用和回调,消息的加载、删除、更新等
除此之外,还有很多衍生页面:多媒体、预览、用户列表、用户信息等。
视图控制器
名称 | 视图控制器 |
---|---|
会话列表 | RChatListViewController |
会话页面 | RCChatViewController |
定制化
如果您不想使用 Global IM UIKit 提供的默认视图控制器,您可以继承 Global IM UIKit 的视图控制器,创建一个自定义的视图控制器类。
例如,您可以参考以下示例代码创建一个继承自 RCChatListViewController
的自定义会话列表,并将初始化的实例通过 UINavigationController
展示出来:
{
// 会话列表的展示类型,以单聊和群聊为例
RCChatType chatType = RCChatTypeSingle|RCChatTypeGroup;
// 会话列表初始化
DemoChatListViewController *controller = [[DemoChatListViewController alloc] initWithChatType:chatType];
// 必须使用 UINavigationController 展示
[self.navigationController pushViewController:controller animated:YES];
// 如果外部没有用 UINavigationController,需要创建一个
// UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
// navigationController.modalPresentationStyle = UIModalPresentationOverFullScreen;
// navigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
// [self presentViewController:navigationController animated:YES completion:nil];
}
提示
会话列表必须有导航控制器,如果没有控制器,请参考代码示例创建一个。