提示
此功能在 5.12.2 版本开始支持。
群通知页面
群通知列表页面展示了当前用户收到的群通知。进入该页面,SDK 就会从数据库中拉取群组信息。IMKit 提供基于 UITableView
的群通知页面类 RCGroupNotificationViewController
。
群通知页面
群通知列表页面一般由导航栏,搜索栏和群组列表三部分部分组成。
初始化
调用 RCGroupNotificationViewController
类的初始化方法构建群通知列表页面。注意,您需要创建一个 RCGroupNotificationViewModel
对象, 作为RCGroupNotificationViewController
的业务逻辑处理模块。
RCGroupNotificationViewModel *viewModel = [[RCGroupNotificationViewModel alloc] init];
RCGroupNotificationViewController *vc = [[RCGroupNotificationViewController alloc] initWithViewModel:viewModel];
[self.navigationController pushViewController:vc animated:YES];
参数 | 类型 | 说明 |
---|---|---|
viewModel | RCGroupNotificationViewModel | RCGroupNotificationViewController 的业务逻辑处理模块。 处理页面UI的配置以及群通知信息的拉取。 |
定制化
IMKit 群组列表界面的样式可供自定义修改。
标题栏
IMKit 的 RCGroupNotificationViewController
使用了系统的导航栏,可用于显示群通知列表的标题,用户通过继承RCGroupNotificationViewController
,在 viewDidLoad
方法中通过 title
属性设置标题。
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"新标题";
}
自定义 Cell
1. 自定义 RCCustomCell
@interface RCCustomCell : UITableViewCell
@property (nonatomic, strong) UILabel *titleLabel;
@end
@implementation
// Cell 绘制
@end
2.自定义 RCCustomCellViewModel
提示
RCGroupNotificationCellViewModel 可以Cell的创建, 自定义 CellViewModel 需要继承该类
@interface RCCustomCellViewModel : RCGroupNotificationCellViewModel
/// 申请信息
@property (nonatomic, strong) RCGroupApplicationInfo *application;
/// 初始化
- (instancetype)initWithApplicationInfo:(RCGroupApplicationInfo *)application;
@end
@implementation RCCustomCellViewModel
- (instancetype)initWithApplicationInfo:(RCGroupApplicationInfo *)application
{
self = [super init];
if (self) {
self.application = application;
...
}
return self;
}
// 注册并自定义cell
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier = @"RCCustomCellIdentifier";
// 注册 cell
[tableView registerClass:RCCustomCell.class forCellReuseIdentifier:cellIdentifier];
// 返回 cell
RCCustomCellViewModel *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
}
//修改UI
cell.titleLabel.text = self.application.inviterInfo.name;
...
return cell;
}
@end
3. 修改数据源
实现代理方法:
// 数据源
- (NSArray *_Nullable)groupNotificationViewModel:(RCGroupNotificationViewModel *)viewModel
willLoadItemsInDataSource:(NSArray *_Nullable)dataSource{
// 对数据源增删改处理
}
4.点击 cell
/// 配置自定义点击事件,Returns: App是否处理[YES : SDK不再处理, NO: SDK处理]
- (BOOL)groupNotificationViewModel:(RCGroupNotificationViewModel *)viewModel
viewController:(UIViewController*)viewController
tableView:(UITableView *)tableView
didSelectRow:(NSIndexPath *)indexPath
cellViewModel:(RCBaseCellViewModel *)cellViewModel {
}