SwiftUI允许我们直接从绑定中创建List或ForEach,然后为我们显示的数据集合中的每个元素提供单独绑定的内容闭包。当您为每个项目显示的内容需要绑定到其某些数据时,这一点很重要,例如列表行有一个文本字段来编辑用户名。
要使用此功能,请将绑定直接传递到您的列表中,例如$users,然后在内容闭包中接受绑定,例如$user。例如,在这段代码中,我们显示了一个用户列表,并在每一行中添加了一个Toggle来确定他们是否被联系过:
struct User: Identifiable {
let id = UUID()
var name: String
var isContacted = false
}
struct ContentView: View {
@State private var users = [
User(name: "Taylor"),
User(name: "Justin"),
User(name: "Adele")
]
var body: some View {
List($users) { $user in
Text(user.name)
Spacer()
Toggle("User has been contacted", isOn: $user.isContacted)
.labelsHidden()
}
}
}
以这种方式使用绑定是修改列表的最有效方法,因为当只有一个项目更改时,它不会导致整个视图重新加载。
评论区