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