cast UIWindow。rootView到主机控制器,如:
window?.rootViewController as? UIHostingController<MainTabView>
工作正常,除非它有environmentObject
s。
由于我的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>>>>
即使这不是一个完整的答案的问题(因为有多个环境对象),我张贴在这里,以防它可能会帮助有人使用一个单一的环境对象。