这是我的测试代码:
struct ArrView: View {
@State var arr: [String] = ["first", "second"]
var body: some View {
VStack {
Button("append") {self.arr.append("item\(self.arr.count)")}
List(arr.indices) {row in
Text(self.arr[row])
}
}
}
}
当按下“追加”按钮时,List
视图没有更新。
我做错了吗?
答案 0 :(得分:2)
仅当提供的数据是常量时,才可以使用ForEach<Range>()
,否则,您需要使用ForEach(_:id:content:)
并明确提供id
,如下所示:
struct ArrView: View {
@State var arr: [String] = ["first", "second"]
var body: some View {
VStack {
Button("append") {self.arr.append("item\(self.arr.count)")}
List(arr, id: \.self) { item in
Text(item)
}
}
}
}
答案 1 :(得分:1)
我认为这不是创建List
视图的正确方法。这是一个示例
struct ContentView: View {
@State var arr: [String] = ["first", "second"]
var body: some View {
VStack {
Button("append") {self.arr.append("item\(self.arr.count)")}
List(self.arr, id: \.self) { str in
Text(str)
}
}
}
}