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。