如何绑定ObservableObject?

时间:2020-10-21 06:58:04

标签: swift swiftui

我在主视图上有一个类似ObservableObject的对象。

class GlobalVariables: ObservableObject {
  @Published var showContactForm:Bool? = false
}

主视图上有一个模态表,如下所示

.sheet(isPresented: XXXXX, onDismiss: {


}) {
  ContactForm()
}

XXXXX通常类似于$showContactForm,但showContactFormGlobalVariables内部的已发布对象。

我该如何绑定?我要穿什么XXXXX

1 个答案:

答案 0 :(得分:1)

要绑定到可观察对象的属性,您将在视图中创建一个属性,该属性将保存对象的实例并绑定到该对象,就像使用任何本地@State或{{1} }属性:

@Binding

(请注意,struct SomeView: View { @StateObject var gv = GlobalVariables() var body: some View { // ... .sheet(isPresented: $gv.someCondition) { // ... } } } 期望使用isPresented:,因此Binding<Bool>必须是非可选的someCondition

  • 如果Bool已被视图实例化并拥有,请使用@StateObject
  • 使用GlobalVariables-如果它是在视图外部实例化的,并且通过@ObservedObject传递了实例
  • 使用init-与@EnvironmentObject相同,但是实例是通过@ObservedObject传递的。