作为我的应用程序的根视图控制器,我使用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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)