React-Native+原生UITabBarController+原生UINavigationContrller的跳轉(zhuǎn)和RN與IOS原生的交互等一系列看似很牛逼的解決方案

為什么我想用原生UITabBarController加RN來開發(fā)APP呢?

1.考慮到以后可能會涉及到IM功能,目前對于創(chuàng)業(yè)公司來說,IM大多使用第三方IM平臺開發(fā),許多第三方框架都會有直接UI集成,所以這里用原生tabbar做一個(gè)控制跳轉(zhuǎn).(當(dāng)然RN也可以封裝原生的View)

2.對于性能要求比較大,圖片比較多的界面,比如朋友圈界面等,個(gè)人覺得使用原生要更加有效率一些.因?yàn)镽N中Image組件沒有做圖片緩存,沒有我們習(xí)慣的站位圖,還是使用SDWebImage更加開心一點(diǎn).

3.對于初入RN的童鞋們,怕被入坑后無法自拔,那就使用我這套解決方案吧,讓你快速入坑快速出坑

為什么我們要使用嵌套UINavigationContrller?

因?yàn)槲覀儚腞N跳原生這樣啦

這里是牛逼的分割線,進(jìn)入正題

1.首先我們先初始化一個(gè)RN項(xiàng)目

2.根據(jù)你有幾個(gè)模塊創(chuàng)建幾個(gè)入口文件(index.ios.js)如圖:


我這里就是直接復(fù)制粘貼<index.ios.js>文件,然后修改一下名字

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

4.下面開始在項(xiàng)目中添加storyboard(喜歡用純代碼的也可以使用純代碼)


storyboard結(jié)構(gòu)

4.1.創(chuàng)建好storyboard我們要注意入口文件的修改,選中你的入口控制器


設(shè)置入口控制器

4.2.配置項(xiàng)目的Main Interface,選擇剛剛創(chuàng)建的storyboard

設(shè)置入口

4.3.AppDelegate的didFinishLaunchingWithOptions方法中return YES;


5.設(shè)置不同模塊的不同的RN入口js

5.1調(diào)用RN代碼

注冊

5.2注冊RCTBridgeDelegate,并且調(diào)用sourceURLForBridge方法


設(shè)置入口JS

以此類推,設(shè)置完其他的RN模塊之后,我們便可跑起來我們的項(xiàng)目

*其他東西:

RN與原生的交互與相互傳參

請查看我的上篇文章,講解了最基本的交互,現(xiàn)在講的是帶返回參數(shù)的方法

1.JS中寫法


2.IOS原生中寫法

2.1保存block


2.2使用block


注:會node.js的小伙伴應(yīng)該很容易看懂這段代碼。我看了其他第三方框架的RN代碼,好像ios通知也可以做原生與RN的交互,大家有興趣可以去研究研究。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容