RN与iOS交互

有时候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。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容