список не обновляется после изменения текстов - PullRequest
0 голосов
/ 19 марта 2020

Я уверен, что делаю что-то не так, но я не знаю, что.

У меня небольшой список, и я обновляю тексты с помощью таймера, который я вижу в отладчике, который обновляет. Но список не будет обновляться ...

Спасибо за помощь.

struct ListTest: View {

    @State      var texts       : [String]

    var body: some View {
        List {
            ForEach(self.texts, id: \.self) { text in
                Text(text)
            }
        }
    }
}

struct ContentView: View {

    @State var texts = ["a"]

    var body: some View {

        ListTest(texts: self.texts)
            .onAppear() {
                Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { (timer) in
                    self.texts.append("\(self.texts.count)")
                    print(self.texts)
                }
        }
    }
}

1 Ответ

1 голос
/ 19 марта 2020

удалите обертку свойства @State из своего ListTest

struct ListTest: View {
    var texts       : [String]
    var body: some View {
        List {
            ForEach(self.texts, id: \.self) { text in
                Text(text)
            }
        }
    }
}

enter image description here

Наконец, подумайте о более "совместимом совместимом" коде

import SwiftUI
struct ListTest: View {
    var texts: [String]
    var body: some View {
        List {
            ForEach(self.texts, id: \.self) { text in
                Text(text)
            }
        }
    }
}

struct ContentView: View {
    @State var texts = ["a"]
    let tp = Timer.publish(every: 0.5, on: .main, in: .default).autoconnect()
    var body: some View {
        ListTest(texts: self.texts)
            .onReceive(tp) { (date) in
            self.texts.append("\(self.texts.count)")
        }
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

что функционально равно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...