美文网首页
RN与iOS交互

RN与iOS交互

作者: 考槃在涧 | 来源:发表于2017-12-27 09:45 被阅读215次

    有时候RN需要跟iOS原生之间进行交互,譬如从一个RN的页面跳转到iOS原生的页面,从一个iOS原声的页面跳转到RN等。

    RN跳转原生页面

    首先要在Xcode中新建一个类,继承自NSObject,然后导入如下头文件:

    #import <React/RCTBridgeModule.h>
    #import <React/RCTLog.h>
    

    在 .m 文件里实现跳转:

    RCT_EXPORT_MODULE();
    // 接收传过来的 NSString
    RCT_EXPORT_METHOD(RNOpenOneVC:(NSString *)name){
      NSLog(@"%@", name);
      //跳转界面
      //主要这里必须使用主线程发送,不然有可能失效
      dispatch_async(dispatch_get_main_queue(), ^{
        WYMTCAdmissionsDeskController *one = [[WYMTCAdmissionsDeskController alloc]init];
        
        AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        
        [app.nav pushViewController:one animated:YES];
      });
    }
    

    需要在AppDelegate.h里建一个

    @property (nonatomic, strong) UINavigationController *nav;
    

    然后在AppDelegate.m里进行初始化,把原来的页面添加到导航控制器里

    如果需要用模态跳转,可以用UIViewController * controller = RCTPresentedViewController();来获取当前的ViewController。

    相关文章

      网友评论

          本文标题:RN与iOS交互

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