页面事件监听
监听会话列表页面事件
您可以设置会话列表操作监听,实现自定义需求。会话列表 RCChatListViewController
的监听事件在代理 RCChatListViewDelegate
、RCChatListViewDataSource
、RCChatListViewModelDelegate
中,重写代理方法可以自定义处理
会话列表视图事件回调
RCChatListViewDelegate
包含 cell 即将加载、Cell 加载完成、搜索框点击、会话选中与取消选中、加载更多会话的回调,在下面方法中处理完自定义需求后,需要还需要 SDK 的默认处理,可以通过 super 调用内置的处理。
列表中的 Cell 将要加载
/// 列表中的 Cell 将要加载
/// - Parameters:
/// - listView: 列表页面
/// - chatModel: 会话对象
- (void)listView:(RCChatListView *)listView willLoadCell:(UITableViewCell *)cell
forChatModel:(RCChatModel *)chatModel;
列表中的 Cell 加载完成
/// 列表中的 Cell 加载完成
/// - Parameters:
/// - listView: 列表页面
/// - chatModel: 会话消息对象
- (void)listView:(RCChatListView *)listView didLoadCell:(UITableViewCell *)cell
forChatModel:(RCChatModel *)chatModel;
搜索框点击事件
/// 搜索框点击事件
/// - Parameter listView: 会话列表
/// - Parameter searBar: 搜索条
- (void)listView:(RCChatListView *)listView didClickSearchBar:(RCChatListSearchBar *)searBar;
选中会话列表中的会话
/// 选中会话列表中的会话
/// - Parameter listView: 会话列表
/// - Parameter chatModel: 会话对象
- (void)listView:(RCChatListView *)listView didSelectedChat:(RCChatModel *)chatModel;
取消选中会话列表中的会话
/// 取消选中会话列表中的会话
/// - Parameter listView: 会话列表
/// - Parameter chatModel: 会话对象
- (void)listView:(RCChatListView *)listView didDeselectedChat:(RCChatModel *)chatModel;
会话列表即将加载更多
/// 会话列表即将加载更多
/// - Parameter listView: 会话列表
/// - Parameter chatModel: 会话对象
- (void)listView:(RCChatListView *)listView didDetectPreloadingAtIndexPath:(NSIndexPath *)indexPath;
会话列表视图数据源
RCChatListViewDataSource
可以获取到会话加载的数据源、会话左滑或者右滑编辑项, 并对其做增删改查操作。
会话列表数据
/// 会话列表数据
/// - Parameters:
/// - listView: 会话列表组件
/// - tableView: tableView
- (NSArray<RCChatModel *> *)listView:(RCChatListView *)listView
chatModelsInTableView:(UITableView *)tableView;
代码示例:
- (NSArray<RCChatModel *> *)listView:(RCChatListView *)listView chatModelsInTableView:(UITableView *)tableView {
NSMutableArray *tempArray = [super listView:listView chatModelsInTableView:tableView].mutableCopy;
/// 对 tempArray 做增删改操作
///
return tempArray;
}
会话左滑或右滑编辑项
/// 根据 indexPath 及滑动方向返回 cell 显示的 items
/// - Parameter listView: 会话列表
/// - Parameter indexPath: 会话位置
/// - Parameter direction 滑动方向
- (NSArray<RCSwipeItem *> *)listView:(RCChatListView *)listView
cellSwipeItemsAtIndexPath:(NSIndexPath *)indexPath
forDirection:(RCSwipeDirection)direction;
代码示例:
- (NSArray<RCSwipeItem *> *)listView:(RCChatListView *)listView cellSwipeItemsAtIndexPath:(NSIndexPath *)indexPath forDirection:(RCSwipeDirection)direction {
NSMutableArray *tempArray = [super listView:listView cellSwipeItemsAtIndexPath:indexPath forDirection:direction].mutableCopy;
/// 对 tempArray 做增删改操作
return tempArray;
}
会话列表 ViewModel 回调
RCChatListViewModelDelegate
包含更新会话 View 相关的回调,在下面方法中处理完自定义需求后,需要还需要 SDK 的默认处理,可以通过 super 调用内置的处理。
刷新会话列表
/// 刷新会话列表
/// - Parameter viewModel: ViewModel
/// - Parameter chatModels: 会话数据
- (void)viewModel:(RCChatListViewModel *)viewModel chatListDidReload:(NSArray<RCChatModel *> *)chatModels;
插入会话
/// 插入会话
/// - Parameter viewModel: ViewModel
/// - Parameter indexSet: 会话 index list
- (void)viewModel:(RCChatListViewModel *)viewModel chatListDidInsertAtIndexSet:(NSIndexSet *)indexSet;
移动会话
/// 移动会话
/// - Parameter viewModel: ViewModel
/// - Parameter indexSet: 会话 index list
- (void)viewModel:(RCChatListViewModel *)viewModel chatListDidMoveFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex;
刷新某些会话
/// 刷新某些会话
/// - Parameter viewModel: ViewModel
/// - Parameter indexSet: 会话 index list
- (void)viewModel:(RCChatListViewModel *)viewModel chatListDidUpdateAtIndexSet:(NSIndexSet *)indexSet;
移除某些会话
/// 移除某些会话
/// - Parameter viewModel: ViewModel
/// - Parameter indexSet: 会话 index list
- (void)viewModel:(RCChatListViewModel *)viewModel chatListDidRemoveAtIndexSet:(NSIndexSet *)indexSet;
会话列表所有数据加载完成
/// 会话列表所有数据加载完成
/// - Parameter viewModel: ViewModel
- (void)viewModelDidLoadAllChat:(RCChatListViewModel *)viewModel;
会话列表有错误产生
/// 会话列表有错误产生
/// - Parameters:
/// - viewModel: ViewModel
/// - error: 错误信息
- (void)viewModel:(RCChatListViewModel *)viewModel errorDidOccur:(NSError *)error;