从NavigationLink创建的视图可以通过初始化ObservedObject来实现数据的观察和更新。
首先,我们需要创建一个ObservableObject类,该类将包含我们想要观察和更新的数据。例如,我们可以创建一个名为"UserData"的ObservableObject类:
class UserData: ObservableObject {
@Published var name: String = ""
}
在这个示例中,我们创建了一个名为"name"的属性,并使用@Published属性包装器将其标记为可观察的。这意味着当"name"属性发生变化时,视图将自动更新。
接下来,在我们的视图中,我们可以使用@ObservedObject属性包装器来初始化ObservableObject。在这种情况下,我们将使用NavigationLink创建的视图来初始化UserData对象:
struct ContentView: View {
@ObservedObject var userData = UserData()
var body: some View {
NavigationView {
NavigationLink(destination: DetailView(userData: userData)) {
Text("Go to Detail View")
}
}
}
}
在这个示例中,我们将UserData对象传递给了DetailView视图,并使用@ObservedObject属性包装器将其标记为可观察的。这意味着当UserData对象的属性发生变化时,DetailView视图将自动更新。
最后,我们可以在DetailView视图中访问和更新UserData对象的属性:
struct DetailView: View {
@ObservedObject var userData: UserData
var body: some View {
TextField("Enter your name", text: $userData.name)
.padding()
}
}
在这个示例中,我们使用TextField来显示和更新UserData对象的"name"属性。当用户在TextField中输入内容时,UserData对象的"name"属性将自动更新,并且ContentView视图中的文本也会相应地更新。
这样,我们就可以通过从NavigationLink创建的视图初始化ObservedObject,实现数据的观察和更新。在这个过程中,我们可以使用@ObservedObject属性包装器来标记ObservableObject,并使用@Published属性包装器来标记可观察的属性。
领取专属 10元无门槛券
手把手带您无忧上云