Обновите представление списка SwiftUI

#swiftui #swiftui-list

Вопрос:

У меня есть представление, которое содержит представление списка и кнопку. При нажатии кнопки в массив будет добавлен новый элемент. В представлении списка отображаются все элементы этого массива. Но если я нажму кнопку, представление списка не отобразит изменения в массиве.

Вот мой код:

 import SwiftUI

var myArray = ["Harald", "Jürgen", "Günter"]

struct ContentView: View {
    var body: some View {
        HStack{
            List(myArray, id: .self) {
                Name in
                Text(Name)
            }
            Button(action: {
                myArray.append("Harald")
                print(myArray)
            }, label: {
                Text("Button")
            })
        }
    }
}
 

Мой вопрос теперь в том, как я могу это сделать, чтобы в моем представлении списка также отображались новые элементы / изменения.
Спасибо, Бутош

Ответ №1:

myArray должен быть в состоянии@, и он должен находиться внутри представления содержимого. Я рекомендую вам прочитать и посмотреть несколько руководств по SwiftUI.

 struct ContentView: View {
    @State var myArray = ["Harald", "Jürgen", "Günter"]
    var body: some View {
        HStack{
            List(myArray, id: .self) {
                Name in
                Text(Name)
            }
            Button(action: {
                myArray.append("Harald")
                print(myArray)
            }, label: {
                Text("Button")
            })
        }
    }
}