我有一个 UIHostingController 托管一个名为 CatalogView 的 SwiftUI 视图。显示它时,附加了一个环境对象,所以基本上从 UIKit 显示它是这样的:
let rootCatalogView = CatalogView()
let appState = AppState.get()
let catalogView = UIHostingController(rootView: rootCatalogView.environmentObject(appState))
navigationController.pushViewController(catalogView, animated: true)
现在稍后我需要检查这个 UIHostingController 是否在 navigationController.viewControllers 列表中
type(of:) 显示以下内容,哪种有意义:
UIHostingController<ModifiedContent<CatalogView, _EnvironmentKeyWritingModifier<Optional<AppState>>>>
诸如 vc.self 是 UIHostingController.Type 或 vc.self 是 UIHostingController< CatalogView >.Type 之类的东西都返回 false (vc 是 navigationController.viewControllers 的一个元素
以下显然有效,它返回 true,但是 UIHostingController 初始化中的任何更改都会更改其类型
vc.isKind(of: UIHostingController<ModifiedContent<CatalogView, _EnvironmentKeyWritingModifier<Optional<StoreManager>>>>.self)
如何检查视图控制器是否属于 UIHostingController 类型?或者至少我怎样才能将控制器转换为 UIHostingController 以便我可以检查它的 rootview?