SwiftUI如何在HostingController之间传递EnvironmentObjects?

SwiftUI如何在HostingController之间传递EnvironmentObjects?,swiftui,watchkit,Swiftui,Watchkit,我正在尝试以与此问题类似的方式实现Apple Watch应用程序: 我正在尝试在不同的主机控制器之间传递数据。我的数据存储在具有已发布属性的环境对象中。如果我只使用一个HostingController,那么在不同的视图之间共享数据就可以了。但是,当使用不同的主机控制器、承载不同的视图(没有分段)时,我找不到使用环境对象的语法,从HC1到HC2,HC3,等等 我在我的SwiftUI视图中使用这段代码来显示HostingController NavigationLink(destinationN

我正在尝试以与此问题类似的方式实现Apple Watch应用程序:

我正在尝试在不同的主机控制器之间传递数据。我的数据存储在具有已发布属性的
环境对象中。如果我只使用一个HostingController
,那么在不同的视图之间共享数据就可以了。但是,当使用不同的
主机控制器
、承载不同的视图(没有分段)时,我找不到使用
环境
对象的语法,从
HC1
HC2
HC3
,等等

我在我的SwiftUI视图中使用这段代码来显示HostingController

NavigationLink(destinationName: "HC2"){
        Text("Go to HC2")

这是可能的方法

class AppState: ObservableObject {
    static let shared = AppState()      // shared instance

    @Published var setting: String = "some"
}

class HostingController: WKHostingController<AnyView> {
    override var body: AnyView {
        let contentView = ContentView()
            .environmentObject(AppState.shared)     // << inject !!
        return AnyView(contentView)
    }
}

class HostingController2: WKHostingController<AnyView> {
    override var body: AnyView {
        let contentView = ContentView2()
            .environmentObject(AppState.shared)     // << inject !!
        return AnyView(contentView)
    }
}
class AppState:ObservableObject{
静态let shared=AppState()//共享实例
@已发布的变量设置:String=“some”
}
类HostingController:WKHostingController{
覆盖变量主体:AnyView{
让contentView=contentView()

.environmentObject(AppState.shared)//还有其他方法吗?使用全局共享数据似乎并不理想。你最终选择了什么方法?我面临着完全相同的问题。我使用了适合我需要的方法。但现在,我有另一个问题。我不知道如何从HC3或HC4@bencallis是吗找到可行的解决方案了吗?我想在navigationcontroller中共享多个UIHostingController之间的数据。