在SwiftUI中,动态列表的生成和更新可以使用ForEach
结构来实现。ForEach
结构可以根据提供的数据生成多个视图,并根据数据的变化自动更新视图。
示例代码如下:
struct ContentView: View {
@State var items: [String] = ["Item 1", "Item 2", "Item 3"]
var body: some View {
NavigationView {
List {
ForEach(items, id: \.self) { item in
Text(item)
}
.onDelete(perform: deleteItem)//左滑删除
}
.navigationBarItems(trailing: addButton)
}
}
func deleteItem(at offsets: IndexSet) {
items.remove(atOffsets: offsets)
}
var addButton: some View {
Button(action: {
items.append("New Item")
}) {
Image(systemName: "plus")
}
}
}
上述代码中,我们使用了ForEach
结构来遍历items
数组,根据数组的每个元素生成一个Text
视图。我们使用id
参数来确保每个元素在数组中的唯一性。
当我们点击列表中的某个元素时,我们可以通过onDelete
参数调用deleteItem
方法来删除相应的元素。
我们还添加了一个导航栏按钮,点击该按钮会向items
数组中添加一个新的元素。
由于我们使用了@State
属性包装items
数组,当数组发生变化时,SwiftUI会自动重新渲染视图。