在现有项目中启动react native之后返回本机应用程序

时间:2017-01-27 17:33:36

标签: ios react-native react-native-android react-native-ios

我已成功integrated react native in existing project。在我的原生应用中,我有一个屏幕,其中包含一个启动react-native屏幕的按钮。

Android中,我可以在BackAndroid.exitApp()的帮助下返回上一个屏幕。如何在iOS中实现相同的功能?

2 个答案:

答案 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