【发布时间】:2023-05-20 06:32:01
【问题描述】:
我目前正在开发一个电容器插件,因此我对 UIView/Controller 堆栈的控制有些有限。我想要做的是在电容器 webView 下方显示我的插件视图。 Capacitor Plugin 框架提供了一个BridgeViewController,它控制了一个WKWebView(Capacitor webView)。 BridgeViewController 也是 rootViewController,因此 webView 的父级只是没有 View Controller 的 UIView。
通过执行以下操作,我可以让我的插件显示在 Capacitor webView 下方:
self.bridge.viewController.view.superview?.addSubview(self.myPluginViewController.view)
self.bridge.viewController.view.superview?.bringSubviewToFront(self.webView)
bridge.view 返回 web 视图。然而,问题是self.myPluginViewController 的生命周期方法不再触发。不幸的是,由于bridge 是rootViewController,bridge.view.superview 没有控制器。
我也试过了:
self.bridge.viewController.addChild(self.myPluginViewController)
self.bridge.viewController.view.superview?.addSubview(self.myPluginViewController.view)
self.bridge.viewController.view.superview?.bringSubviewToFront(self.webView)
但这会引发UIViewControllerHierarchyInconsistency 错误。
关于如何解决这个问题有什么想法吗?是否可以将 myPluginViewController 添加到 bridge 作为 webView 的兄弟姐妹?或者,有没有办法将myPluginViewController.view 直接添加到另一个视图,同时保留生命周期方法?
【问题讨论】:
-
我不认为这对我有太大帮助。
self.bridge.viewController中的视图是WKWebView,我无法将插件视图添加到其中。我需要让我的插件视图成为该视图的兄弟。不幸的是,self.bridge.viewController没有任何 ViewController 父级,因为它是根视图。所以我唯一可以访问的父母是UIView,而不是UIViewController
标签: ios swift uiview uiviewcontroller capacitor