【发布时间】:2020-09-18 09:09:01
【问题描述】:
我创建了一个简单示例来说明我所面临的问题。我有两个视图,ListView 和 EditView。 ListView 正在观察包含用户名列表的 UsersViewModel(复数)。
使用 NavigationLink 我想展示一个可以编辑用户名的表单,这就是我感到困惑的地方。我创建了一个 UserViewModel(单数),我有 EditView 观察,但是当我尝试调用 EditView 传递 ForEach 循环中的值时,我得到一个类型不匹配错误,因为我没有传递 UserViewModel。
也许我误解了可观察对象。我想我可以更改编辑表单上的用户名,导航回列表视图,然后我会在列表中看到更改。
struct ListView: View {
// Observe the Users View Model
@ObservedObject var usersViewModel = UsersViewModel()
var body: some View {
NavigationView {
List() {
ForEach(usersViewModel.users) { user in
// FAILS with cannot converted "user" to expected type userViewModel
NavigationLink (destination: EditView(userViewModel: user)) {
Text("Hello \(user.name)")
}
}
}
.navigationBarTitle("User List", displayMode: .inline)
.onAppear(){
usersViewModel.loadUsers()
}
编辑视图
struct EditView: View {
@ObservedObject var userViewModel: UserViewModel
var body: some View {
TextField("User Name", text: $userViewModel.user)
【问题讨论】:
标签: swiftui swiftui-navigationlink observedobject