如何使用 ObservableObject 关键字将数据移动到其他屏幕?我将第一页上的数据保存到我使用关键字 Published 创建的变量中,但我无法在第二页上访问这些数据。
用户模型
import Combine
struct User: Codable, Identifiable {
var id = UUID()
var name: String
var surName: String
}
用户数据存储
import Combine
class UserDataStore: ObservableObject {
@Published var users: [User] = []
}
内容视图
我使用 contentView 屏幕上的 TextField 对象从用户那里获取信息。按下按钮后,我将其添加到 UserDataStore 中的数组中。我重定向到详细信息页面。
struct ContentView: View {
@State var name: String = ""
@State var surName: String = ""
@State var user = User(name: "", surName: "")
@State var show: Bool = false
@ObservedObject var userStore = UserDataStore()
var body: some View {
NavigationView {
VStack(spacing: 50) {
TextField("isim", text: $name)
TextField("soyİsim", text: $surName)
NavigationLink(
destination: DetailView(),
isActive: $show,
label: {
Button(action: {
self.user.name = name
self.user.surName = surName
self.userStore.users.append(user)
self.show = true
}) {
Text("Kaydet")
}
})
}
}
}
}
详细视图
在详细页面,我尝试查看记录的信息,但我不能。
struct DetailView: View {
@ObservedObject var user = UserDataStore()
var body: some View {
ForEach(user.users) { item in
Text("\(item.name)")
}
}
}