0

我已经成功地将 react native 集成到现有项目中。在我的本机应用程序中,我有一个带有启动屏幕按钮的react-native屏幕。

Android我可以借助BackAndroid.exitApp(). 如何在 iOS 中实现相同的功能?

4

2 回答 2

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
}
于 2017-01-29T20:19:15.450 回答
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];

I developed a small npm package for achieving this. Find it here

于 2019-03-18T10:43:41.710 回答