美文网首页
iOS模块的自定义

iOS模块的自定义

作者: Mr_LS | 来源:发表于2020-12-14 17:16 被阅读0次

场景:项目中由于模块商店上类似微信通讯录的模块经常莫名闪退,所以需要原生提交一个模块供前端调用

学习历程:官方文档+视频

实践:

1.去官网下载模块开发sdk,找到ModulesDevProject,给予此进行模块开发,工程项目配置完全参照官方文档,在此就不多赘述
2.新建所需的类UZContactList继承于UZModule

    #import "UZModule.h"

    NS_ASSUME_NONNULL_BEGIN

    @interface UZContactList : UZModule

    @end

3.在.m中开始编写内容

3.1 导入工具类NSDictionaryUtils进行调取前端参数取值,导入UZAppUtils项目工具类对颜色等方法需要
3.2 原生代码编写
3.3 原生写方法提供给前端调用,并与前端交互:如下创建一个指定位置和大小的tabview:

    -(void)open:(NSDictionary*)paramDict{
self.paramDict=paramDict;
float x=[paramDict floatValueForKey:@"x" defaultValue:0];
float y=[paramDict floatValueForKey:@"y" defaultValue:0];
float w=[paramDict floatValueForKey:@"w" defaultValue:0];
float h=[paramDict floatValueForKey:@"h" defaultValue:0];
self.tableView.frame=CGRectMake(x, y, w, h);
[self.view addSubview:self.tableView];
}     

3.4回调

3.4.1回调过程:

A.前端回调原生:原生获取cbId,通过cbId建立桥梁进行回调
B.原生回调前端:原生把参数通过cbId传给前端

3.4.2回调示例:原生点击单元格,把参数通过cbId传前端

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSMutableDictionary *dic=[NSMutableDictionary dictionary];
dic[@"key"]=@"a";
dic[@"index"]=@(indexPath.row);
dic[@"clickType"]=@(0);
NSInteger cbId = [self.paramDict integerValueForKey:@"cbId" defaultValue:0];
[self sendResultEventWithCallbackId:cbId dataDict:dic errDict:nil doDelete:NO];
}     

4.把方法名公开出来,提供给前端调用:

编辑module.json,示例:

[{
"name":"moduleDemo",
"class":"UZContactList",
"methods"["open","reloadData"]
}
]

5.打包上传

相关文章

网友评论

      本文标题:iOS模块的自定义

      本文链接:https://www.haomeiwen.com/subject/oizvgktx.html