快速入门iOSReactNativeRective Native

React Native与原生的交互、跳转(仅iOS)

2017-06-02  本文已影响450人  O_Mys

背景:

      最近开始接触React Native,学习了一些RN与iOS之间的交互,现在就总结一下吧,如果有写得不对的,求指出。

创建工程:

我是直接创建了一个RN工程--在终端输入:react-native init RNDemo,然后打开工程,跑起来。

新项目跑起来都是这个模样

然后我比较喜欢用sublime,于是就先在这个项目里自定义一些按钮先。

index.ios.js 运行效果

原生跳RN

好吧,先原生跳RN吧,打开Xcode,创建两个ViewController:OrgOneViewController和RNOneViewController,然后把AppDelegate.m文件里面的

AppDelegate.m

复制到RNOneViewController.m的viewDidLoad方法中,并把launchOptions改成nil和设置:self.view= rootView;

RNOneViewController

然后在AppDelegate.m上把原生控制器加上去,额

AppDelegate.m

在OrgOneViewController.m中加一个按钮,用于跳转到RN界面

OrgOneViewController.m

然后就把程序跑起来吧~

跑起来

当然,不想在RN界面看到导航栏也可以,在RNOneViewController.m里隐藏导航栏就可以了,

RNOneViewController.m

这样导航栏就隐藏了,返回原生就可以使用RN里面的按钮的了,这也涉及到RN跳原生的步骤了。当然,不适用导航栏使用modal来跳转也可以。

RN跳原生

好了···开始从RN跳回原生了,先建立一个RNBridgeModule类,可以理解为一种桥接RN与原生的类,,并实现RCTBridgeModule协议

创建RNBridgeModule RNBridgeModule.h RNBridgeModule.m

通过RCT_EXPORT_METHOD()宏来声明来提供给JS端访问,当然这个宏里面也可以传递参数的,这里没写出。在这个宏里面,使用主线程发送通知,让通知告知承载RCTRootView的控制器进行返回。所以我们需要在RNOneViewController.m里面接收通知

RNOneViewController.m

然后,再到RN代码中添加相关的,代码如下

index.ios.js

最后跑起来的效果是酱紫的:

最终效果

迟点再写点RN与iOS的其他交互吧~

上一篇下一篇

猜你喜欢

热点阅读