将 UIWindow.rootView 转换为<View>具有环境变量的 UIHostingController



cast UIWindow。rootView到主机控制器,如:

window?.rootViewController as? UIHostingController<MainTabView>

工作正常,除非它有environmentObjects。

由于我的MainTabView已经用.environmentObject初始化,所以我不能将其强制转换为UIHostingController<MainTabView>

当我尝试打印rootView的类型时,Xcode告诉:

<_TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentGS1_V10Panparella11MainTabViewGVS_30_EnvironmentKeyWritingModifierGSqCS2_11GroupsStore___GS4_GSqCS2_18GroupsPresentation____: 0x7fd8afe5da40>

我想应该是:

UIHostingController<ModifiedContent<MainTabView, _EnvironmentKeyWritingModifier<GroupsStore, GroupsPresentation>>>

但是我无法到达_EnvironmentKeyWritingModifier

有人知道吗?

如果只有一个EnvironmentObject,下面的类型转换可以编译并正常工作。

UIHostingController<ModifiedContent<MainTabView, _EnvironmentKeyWritingModifier<Optional<GroupStore>>>>

即使这不是一个完整的答案的问题(因为有多个环境对象),我张贴在这里,以防它可能会帮助有人使用一个单一的环境对象。

最新更新