ios – React-Native Hybrid App:嵌入RCTRootView的Pop UIViewController

ios – React-Native Hybrid App:嵌入RCTRootView的Pop UIViewController,第1张

概述我正在使用Objective-C / Swift编写的现有iOS应用程序中集成组件. 作为我的应用程序的根视图控制器,我使用UINavigationController. 在我的应用程序的多个视图控制器之一中,我有一个按钮,可以在导航控制器中推送包含以下代码的视图控制器: @objc class ReactNativeViewController: UIViewController { ove 我正在使用Objective-C / Swift编写的现有iOS应用程序中集成组件.

作为我的应用程序的根视图控制器,我使用UINavigationController.

在我的应用程序的多个视图控制器之一中,我有一个按钮,可以在导航控制器中推送包含以下代码的视图控制器:

@objc class ReactNativeVIEwController: UIVIEwController {  overrIDe func vIEwDIDLoad() {    let JsCodeLocation = NSURL(string: "http://localhost:8081/index.ios.bundle?platform=ios&dev=true")    let contactsVIEw = RCTRootVIEw(bundleURL: JsCodeLocation,modulename: "MainComponent",initialPropertIEs: nil,launchOptions: nil)    self.vIEw.addSubvIEw(contactsVIEw)    contactsVIEw.frame = self.vIEw.bounds;  }}

MainComponent返回一个管理多个React-Native组件的Navigator:

return (  <Navigator    initialRoute={initialRoute}    renderScene={(route,navigator) => {      if (route.component) {        return <route.component navigator={navigator} {...route.passprops} />;      }    }}    navigationbar={      <Navigator.Navigationbar        routeMapper={this.NavigationbarRouteMapper}        style={styles.navbar}      />    }  />);

该工作流程正常.我唯一需要的是当主React-Native组件上的按钮Back被命中时,从我的UINavigationControllerd出ReactNativeVIEwController的方法.

我试过以下但没有运气:

>使用单个方法popLastVIEwController创建一个本机模块,d出从UINavigationController显示的显示的UIVIEwController:

@implementation RNNavigationControllerBrIDgeRCT_EXPORT_MODulE()RCT_EXPORT_METHOD(popLastVIEwController) {  UINavigationController *navigationController = (UINavigationController *)[[[[UIApplication sharedApplication] delegate] window] rootVIEwController];  [navigationController popVIEwControllerAnimated:NO];}@end

>按下后退按钮时调用上面的方法:

onPress={() => {  if (index === 0) {    NativeVIEwsManager.popLastVIEwController();  } else {    navigator.pop();  }}}

但这不起作用.

有什么建议吗?

解决方法 问题解决了!

RCT_EXPORT_METHOD(popLastVIEwController) {  dispatch_async(dispatch_get_main_queue(),^{    UINavigationController *navigationController = (UINavigationController *)[[[[UIApplication sharedApplication] delegate] window] rootVIEwController];    [navigationController popVIEwControllerAnimated:YES];  });}
总结

以上是内存溢出为你收集整理的ios – React-Native Hybrid App:嵌入RCTRootView的Pop UIViewController全部内容,希望文章能够帮你解决ios – React-Native Hybrid App:嵌入RCTRootView的Pop UIViewController所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1073981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存