我有一个使用 react-native-navigation 的 React Native 项目。我已经将该项目与 swift 中的现有原生 iOS 应用程序集成。正如 wix 的文档所说,这行代码将通过原生 iOS 应用程序显示反应原生应用程序:
let jsCodeLocation = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackResource: nil)
RCCManager.sharedIntance().initBridge(withBundleURL: jsCodeLocation)
问题是,通过调用这行代码,应用程序打开了启动屏幕,而我需要通过按下本机应用程序中的按钮并将其作为 viewController 推送来打开反应本机应用程序,但调用这行代码会打开启动屏幕再次没有任何返回按钮返回本机 iOS 应用程序。另外,如果我删除这行代码,而是使用下面的代码,那么我会崩溃。我还尝试将此代码用作提到的 react-native 集成文档,但它不适用于 react-native-navigation:
let jsCodeLocation = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackResource: nil)
let bridge = RCTBridge(bundleURL: jsCodeLocation, moduleProvider: nil, launchOptions: nil)
let rootView = RCTRootView(bridge: bridge, moduleName: "MyHotels", initialProperties: nil)
let rnViewController = UIViewController()
rnViewController.view = rootView
self.navigationController?.pushViewController(rnViewController, animated: true)
上面的代码以我希望的方式打开了本机反应,但它会因以下错误而崩溃:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“需要一个桥实例来创建 RCTRootView”
我的 react-native-navigation 版本是:“^1.1.457”