欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React-Native 橋接iOS原生開(kāi)發(fā)詳解

 更新時(shí)間:2018年01月17日 09:08:55   作者:一天清晨  
本篇文章主要介紹了React-Native 橋接iOS原生開(kāi)發(fā)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

react-native的文檔的原生模塊中可以看到清洗的代碼 傳送門(mén)


接下來(lái)先說(shuō)一下筆者的要實(shí)現(xiàn)的功能:

在iOS原生代碼中集成高德導(dǎo)航,在RN中用JS去調(diào)用原聲代碼,并進(jìn)行跳轉(zhuǎn),

接下來(lái)是筆者遇到的問(wèn)題與不好理解的地方,寫(xiě)出來(lái)跟大家分享讓大家少走彎路.

剛開(kāi)始也是一頭霧水且查資料也是到處都是但是都沒(méi)有解決問(wèn)題.

iOS原生寫(xiě)法

在iOS中創(chuàng)建類(lèi)繼承NSObject(OC語(yǔ)言).

//類(lèi)的.h文件
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTLog.h>
#import <React/RCTUIManager.h>

@interface GaoMapManager : NSObject<RCTBridgeModule>

@end
// 類(lèi)的.m文件
#import "GaoMapManager.h"
#import <AMapNaviKit/AMapNaviKit.h>
#import <UIKit/UIKit.h>
#import "GPSNaviViewController.h"
@implementation GaoMapManager

@synthesize bridge = _bridge;
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD
(
 pushViewControllerXYZ:(nonnull NSNumber *)reactTag
 )
{
 RCTUIManager *uiManager = _bridge.uiManager;
 GPSNaviViewController *gps = [[GPSNaviViewController alloc] init];
 dispatch_async(uiManager.methodQueue, ^{
  [uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *,UIView *> *viewRegistry) {
   UIView * view = viewRegistry[reactTag];
   UIViewController *vc = (UIViewController *)view.reactViewController;
   [vc presentViewController:gps animated:YES completion:^{
    
   }];
  }];
 });
}

以上是全部iOS端的類(lèi)文件的代碼.當(dāng)然繼承高德地圖是需要在AppDelegate.m文件中注冊(cè)高德apiKey(如果地圖不顯示,Xcode中會(huì)顯示錯(cuò)誤,apikey不生效需要10分鐘之后生效且一個(gè)key對(duì)應(yīng)一個(gè)app,否者會(huì)出錯(cuò))

RN中寫(xiě)法

看到這大家如果認(rèn)真看了上面的代碼,會(huì)注意到reactTag這個(gè)參數(shù),在JS中怎么傳這個(gè)參數(shù)呢,又代表著什么意思
其實(shí)很簡(jiǎn)單

import { NativeModules } from 'react-native';

export default NativeModules.GaoMapManager;

這是筆者寫(xiě)的一個(gè)untils的CommoniOSUtils.JS文件.調(diào)用的時(shí)候直接用文件名調(diào)用iOS原生的方法名即可

// findNodeHandle(this.homeHead)就是對(duì)應(yīng)的reactTag參數(shù)的值
 CommoniOSUtils.pushViewControllerXYZ(findNodeHandle(this.homeHead));

findNodeHandle引入方式

import {
 findNodeHandle,
} from 'react-native';

看到這里大家應(yīng)該清楚怎么回事了.我還要啰嗦一句具體是怎么個(gè)情況(個(gè)人理解)

在RN中用findNodeHandle方法去獲取ref控件的tag值,將這個(gè)值傳入到iOS原生中,再用

利用這個(gè)tag獲取當(dāng)當(dāng)前的view,根據(jù)view獲取當(dāng)前VC,用VC去跳轉(zhuǎn)頁(yè)面且傳值使用.完成調(diào)用

高德導(dǎo)航的一些坑

1,用pod引入的是5.3.0版本,demo中確實(shí)5.5.0版本,方法少了很多,自己修改一下問(wèn)題不大
2, iOS9以下會(huì)有內(nèi)存泄漏問(wèn)題,導(dǎo)致崩潰

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文詳解React Redux設(shè)計(jì)思想與工作原理

    一文詳解React Redux設(shè)計(jì)思想與工作原理

    最近看項(xiàng)目中使用了?Redux,?便嘗試了解一波?Redux?的設(shè)計(jì)思想與工作原理,所以本文詳細(xì)的給大家介紹了Redux設(shè)計(jì)思想與工作原理,需要的朋友可以參考下
    2023-09-09
  • Input標(biāo)簽自動(dòng)校驗(yàn)功能去除實(shí)現(xiàn)

    Input標(biāo)簽自動(dòng)校驗(yàn)功能去除實(shí)現(xiàn)

    這篇文章主要為大家介紹了Input標(biāo)簽的自動(dòng)拼寫(xiě)檢查功能去除實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • React如何使用sortablejs實(shí)現(xiàn)拖拽排序

    React如何使用sortablejs實(shí)現(xiàn)拖拽排序

    這篇文章主要介紹了React如何使用sortablejs實(shí)現(xiàn)拖拽排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 使用store來(lái)優(yōu)化React組件的方法

    使用store來(lái)優(yōu)化React組件的方法

    這篇文章主要介紹了使用store來(lái)優(yōu)化React組件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • React BootStrap用戶體驗(yàn)框架快速上手

    React BootStrap用戶體驗(yàn)框架快速上手

    這篇文章主要介紹了React BootStrap用戶體驗(yàn)框架快速上手的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-03-03
  • React18的useEffect執(zhí)行兩次如何應(yīng)對(duì)

    React18的useEffect執(zhí)行兩次如何應(yīng)對(duì)

    這篇文章主要給大家介紹了關(guān)于React18的useEffect執(zhí)行兩次如何應(yīng)對(duì)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用React具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • React?Hook中的useState函數(shù)的詳細(xì)解析

    React?Hook中的useState函數(shù)的詳細(xì)解析

    Hook 就是 JavaScript 函數(shù),這個(gè)函數(shù)可以幫助你鉤入(hook into) React State以及生命周期等特性,這篇文章主要介紹了React?Hook?useState函數(shù)的詳細(xì)解析的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • React使用Electron開(kāi)發(fā)桌面端的詳細(xì)流程步驟

    React使用Electron開(kāi)發(fā)桌面端的詳細(xì)流程步驟

    React是一個(gè)流行的JavaScript庫(kù),用于構(gòu)建Web應(yīng)用程序,結(jié)合Electron框架,可以輕松地將React應(yīng)用程序打包為桌面應(yīng)用程序,本文詳細(xì)介紹了使用React和Electron開(kāi)發(fā)桌面應(yīng)用程序的步驟,需要的朋友可以參考下
    2023-06-06
  • react-router-domV6版本改版踩坑記錄

    react-router-domV6版本改版踩坑記錄

    這篇文章主要介紹了react-router-domV6版本改版踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React?Fiber構(gòu)建completeWork源碼解析

    React?Fiber構(gòu)建completeWork源碼解析

    這篇文章主要為大家介紹了React?Fiber構(gòu)建completeWork源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論