我已成功integrated react native in existing project。在我的原生应用中,我有一个屏幕,其中包含一个启动react-native
屏幕的按钮。
在Android
中,我可以在BackAndroid.exitApp()
的帮助下返回上一个屏幕。如何在iOS中实现相同的功能?
答案 0 :(得分:1)
当我在本机和RN之间进行流程集成时,我只需在我的原生应用程序中添加一个钩子并从RN调用它。所以在你的例子中我会做类似
的事情onBackButtonPress() {
if (Platform.OS === 'ios') {
NativeModules.SomeController.backPressed()
}
else {
BackAndroid.exitApp()
}
}
然后在控制器中定义backPressed()
,以便逻辑放在那里
RCT_EXPORT_METHOD(backPressed) {
// logic to go back e.g. pop view controller or dismiss modal
}
答案 1 :(得分:0)
这可以通过关闭应用程序顶部显示的视图控制器来完成。为了在RCTBridge实现中获得顶视图控制器,您可以使用此代码。
- (UIViewController *)currentTopViewController
{
UIViewController *topVC = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
while (topVC.presentedViewController)
{
topVC = topVC.presentedViewController;
}
if ([topVC isKindOfClass:[UINavigationController class]]) {
return [(UINavigationController *)topVC topViewController];
}
return topVC;
}
然后您可以关闭该视图控制器
[topViewController dismissViewControllerAnimated:YES completion:nil];
我为此目的开发了一个小型npm软件包。 Find it here