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