美文网首页RN学习日志
RN - 从RN传值至iOS原生

RN - 从RN传值至iOS原生

作者: Joh蜗牛 | 来源:发表于2019-04-11 15:35 被阅读0次

    一.导入工具类

    .h文件代码如下:

    #import <Foundation/Foundation.h>
    #import <React/RCTBridgeModule.h>
    
    @interface RNBridge : NSObject<RCTBridgeModule>
    
    @end
    
    

    .m文件代码如下:

    #import "RNBridge.h"
    #import <React/RCTBridge.h>
    //iOS调用RN
    #import <React/RCTEventDispatcher.h>
    
    @implementation RNBridge
    @synthesize bridge = _bridge;
    
    //导出模块
    RCT_EXPORT_MODULE();    //此处不添加参数即默认为这个OC类的名字
    
    // 在RN 中调用此方法,可传值
    RCT_EXPORT_METHOD(RNOpenVC:(NSDictionary *)msg){
    
        NSLog(@"RN传入原生界面的数据为:%@",msg);
        //主要这里必须使用主线程发送,不然有可能失效
        dispatch_async(dispatch_get_main_queue(), ^{
            // 接收到数据时,发送通知
            [[NSNotificationCenter defaultCenter]postNotificationName:@"RNOpenVC" object:msg];
        });
    }
    
    @end
    
    
    

    二.RN代码

    跳转按钮事件:传值至原生(方法名需与工具类中方法名保持一致)

    const purchaseButtonClick = () => {
        RNBridge.RNOpenVC({'type':'purchase'});
    };
    

    三.iOS代码

    - (void)viewDidLoad {
        [super viewDidLoad];
        // 接收通知(工具类中发送的通知)
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pushiOSVC:) name:@"RNOpenVC" object:nil];
    }
    
    
    - (void)pushiOSVC:(NSNotification *)infoNotification {
        NSDictionary *dic = [infoNotification object];
        NSLog(@"%@",dic);
        // 根据数据,做出对应操作
    }
    

    相关文章

      网友评论

        本文标题:RN - 从RN传值至iOS原生

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