Ios 在现有项目中启动react native后返回本机应用程序
我已经成功了。在我的原生应用程序中,我有一个屏幕,屏幕上有一个启动Ios 在现有项目中启动react native后返回本机应用程序,ios,react-native,react-native-android,react-native-ios,Ios,React Native,React Native Android,React Native Ios,我已经成功了。在我的原生应用程序中,我有一个屏幕,屏幕上有一个启动react native屏幕的按钮 在Android中,我可以借助BackAndroid.exitApp()返回上一屏幕。如何在iOS中实现相同的功能?当我在本机和RN之间进行流集成时,我只需在本机应用程序中添加一个挂钩并从RN调用即可。所以在你的例子中,我会这样做 onBackButtonPress() { if (Platform.OS === 'ios') { NativeModules.SomeControll
react native
屏幕的按钮
在
Android
中,我可以借助BackAndroid.exitApp()
返回上一屏幕。如何在iOS中实现相同的功能?当我在本机和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
}
这可以通过关闭应用程序的顶部显示视图控制器来实现。为了在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包 除非用户关闭,否则iOS应用程序不应自行关闭。手动关闭应用可能会导致应用商店拒绝您的应用。请参阅以下教程。第一个屏幕有两个按钮,“玩游戏”按钮(第一个按钮)将启动
react native
屏幕,成功启动react native
后无法返回第一个屏幕。谢谢,我将尝试此操作。这是否意味着您正在创建自定义ViewController?而facebook文档使用UIViewController。