Состояние обновления SwiftUI не обновляет представление - PullRequest
0 голосов
/ 27 мая 2020

Вот мой тестовый код:

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 не обновлялось. Я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы можете использовать 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 голос
/ 27 мая 2020

Я не думаю, что это правильный способ создания 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)
            }
        }
    }
}
...