RN与iOS交互

2017-12-27  本文已影响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。

上一篇下一篇

猜你喜欢

热点阅读