最近项目需要React Native 和原生的交互,当需要用到跳转的时候,官方文档写的也是云里雾里,网上的博客也是你吵我我抄你,乱糟糟一片.最终关于RN跳转原生自己使用的方法,亲证有效.具体原理好好看一下就能理解,直接贴代码了


1.首先在原生项目创建一个Module类,

.m文件中将这个module导出,并将给rn调用的方法导出,这块详细的自行查阅rn和原生的通信吧,还是比较简单的

@interface SmartConfigModule()

@end

@implementation RCTConvert (AKPWifiConfigureProgress)
@end


@implementation SmartConfigModule
RCT_EXPORT_MODULE();

//model,dms,sens
RCT_EXPORT_METHOD(startWifiConfig:(NSString *)model dms:(NSString *)dms sens:(NSString *)sens) {

}

model,dms,sens是rn传给原生的参数,可以不加


2.在AppDelegate类中给rootViewController包上一层UINavigationController

3.在第一步的RCT_EXPORT_METHOD 方法里添加

if([[UIApplication sharedApplication].keyWindow.rootViewController isKindOfClass:[UINavigationController class]]) {
      UINavigationController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
      
      AddDeviceViewController *addDeviceVC = [[AddDeviceViewController alloc]init];
      addDeviceVC.model = model;
      addDeviceVC.dms = dms;
      addDeviceVC.sens = sens;
      [vc pushViewController:addDeviceVC animated:YES];
    }else {
      UINavigationController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
      AddDeviceViewController *addDeviceVC = [[AddDeviceViewController alloc]init];
      addDeviceVC.model = model;
      addDeviceVC.dms = dms;
      addDeviceVC.sens = sens;
      [vc presentViewController:addDeviceVC animated:YES completion:nil];
    }

到此完成rn跳转iOS原生.有问题欢迎提问.





Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐