SwiftUI如何在HostingController之间传递环境对象?

问题描述 投票:1回答:1

我正在尝试以与此问题类似的方式实施Apple Watch应用:Issues implementing navigation from a main controller to page based controllers in WatchOS using SwiftUI

我正在尝试在不同的HostingController之间传递数据。我的数据存储在具有已发布属性的EnvironmentObject中。如果仅使用一个HostingController,则可以在不同视图之间共享数据。但是,当使用不同的HostingController,托管不同的视图(没有顺序)时,我找不到从EnvironmentHC1HC2等使用HC3对象的语法>

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

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

[我正在尝试以与该问题类似的方式来实现Apple Watch应用:我正在尝试使用SwiftUI在WatchOS中实现从主控制器到基于页面的控制器的导航问题...

swiftui watchkit
1个回答
0
投票
这里是可能的方法

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) } }

© www.soinside.com 2019 - 2024. All rights reserved.