Надеюсь, это поможет вам в следующем примере:
У нас есть наша модель, которая Наблюдаемая и имеет все ее переменные Опубликовано :
class A: ObservableObject {
@Published var id: String = ""
@Published var value: String = ""
}
При использовании его в качестве EnvironmentObject убедитесь, что вы установили это в SceneDelegate.swift следующим образом:
let example = Example()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: example.environmentObject(A()))
self.window = window
window.makeKeyAndVisible()
}
Тогда мы можем использовать это EnvironmentObject во всех представлениях:
struct Example: View {
@EnvironmentObject var obj: A
var body: some View {
Button(action: {
self.obj.value = "Hi im changed"
}) {
Text("Change me")
}
}
}
Иногда, когда вы хотите обновить данные в этом объекте, xCode может выдавать ошибку о 'EnvironmentObject не установлен для ... classnameи т. д. ', в этом случае вам нужно передать объект EnvironmentObject в представление назначения:
DestinationView().environmentObject(self.A)
Надеюсь, это поможет, удачи!