React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案

为什么我想用原生UITabBarController加RN来开发APP呢?

1.考虑到以后可能会涉及到IM功能,目前对于创业公司来说,IM大多使用第三方IM平台开发,许多第三方框架都会有直接UI集成,所以这里用原生tabbar做一个控制跳转.(当然RN也可以封装原生的View)

2.对于性能要求比较大,图片比较多的界面,比如朋友圈界面等,个人觉得使用原生要更加有效率一些.因为RN中Image组件没有做图片缓存,没有我们习惯的站位图,还是使用SDWebImage更加开心一点.

3.对于初入RN的童鞋们,怕被入坑后无法自拔,那就使用我这套解决方案吧,让你快速入坑快速出坑

为什么我们要使用嵌套UINavigationContrller?

因为我们从RN跳原生这样啦

这里是牛逼的分割线,进入正题

1.首先我们先初始化一个RN项目

React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第1张图片

2.根据你有几个模块创建几个入口文件(index.ios.js)如图:


React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第2张图片

我这里就是直接复制粘贴文件,然后修改一下名字

3.配置pod(如果不想使用pod可以忽略)

React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第3张图片

4.下面开始在项目中添加storyboard(喜欢用纯代码的也可以使用纯代码)


React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第4张图片
storyboard结构

4.1.创建好storyboard我们要注意入口文件的修改,选中你的入口控制器


React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第5张图片
设置入口控制器

4.2.配置项目的Main Interface,选择刚刚创建的storyboard

React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第6张图片
设置入口

4.3.AppDelegate的didFinishLaunchingWithOptions方法中return YES;


5.设置不同模块的不同的RN入口js

5.1调用RN代码

React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第7张图片
注册

5.2注册RCTBridgeDelegate,并且调用sourceURLForBridge方法


React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第8张图片
设置入口JS

以此类推,设置完其他的RN模块之后,我们便可跑起来我们的项目

*其他东西:

RN与原生的交互与相互传参

请查看我的上篇文章,讲解了最基本的交互,现在讲的是带返回参数的方法

1.JS中写法


React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第9张图片

2.IOS原生中写法

2.1保存block


React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案_第10张图片

2.2使用block


注:会node.js的小伙伴应该很容易看懂这段代码。我看了其他第三方框架的RN代码,好像ios通知也可以做原生与RN的交互,大家有兴趣可以去研究研究。

你可能感兴趣的:(React-Native+原生UITabBarController+原生UINavigationContrller的跳转和RN与IOS原生的交互等一系列看似很牛逼的解决方案)