美文网首页
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