我正在做react-native的混合实现。我将像这样展示 React View Controller:
self.vc = [[ContactForm alloc] init];
self.vc.modalPresentationStyle = UIModalPresentationFullScreen;
UIViewController *root = [[[UIApplication sharedApplication] delegate] window].rootViewController;
[root presentViewController:self.vc animated:YES completion:nil];
在反应本机页面上的操作中,我需要通过导出的方法关闭我呈现的这个视图控制器。我尝试这样做:
@objc(dismissContactForm)
func dismissContactForm() {
DispatchQueue.main.async {
self.dismiss(animated: true, completion: nil)
}
}
它不会关闭,并且视图控制器保持不变。我添加了
DispatchQueue
,因为当控件返回到本机应用程序时,它通过后台线程来实现。
我该如何解决这个问题?
发现问题了。使用 React Native 的
NativeModules
,每次调用时都会创建该类的一个新实例。目前,我已使用窗口的根视图控制器来呈现和关闭视图控制器以获取所呈现的控制器的实例,但也可以使用回调块RCTResponseSenderBlock
。
替换:
self.dismiss(animated: true, completion: nil)
与:
UIApplication.shared.keyWindow?.rootViewController?.dismiss(animated: true, completion: nil)