gpt4 book ai didi

swiftui - 如何在 SwiftUI 中更新列表?

转载 作者:行者123 更新时间:2023-12-03 16:06:40 24 4
gpt4 key购买 nike

我的代码比这稍微复杂一些,所以我创建了一个出现相同错误的示例。

当我导航到一个 View 时,我有一个函数,我想用传递给这个 View 的变量来执行。然后该函数生成一个数组。然后我想将该数组放入一个列表中,但出现错误。

如何获取列表以显示生成的数组?

我认为问题是 List 无法更新,因为它已经有声明的空白数组。

struct ContentView : View {

@State var array = [String]()

var body: some View {
List(self.array,id: \.self) { item in
Text("\(item)")
}
.onAppear(perform: createArrayItems)
}

func createArrayItems() {
array = ["item1", "item2", "item3", "item4", "item5"]
}

}

最佳答案

您可以将 ObservableObject 数据提供程序(例如:ViewModel)与 @Published 属性一起使用。

struct ListView: View {
@ObservedObject var viewModel = ListViewModel()

var body: some View {
NavigationView {
List(){
ForEach(viewModel.items) { item in
Text(item)
}
}
}
}
}



#if DEBUG

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ListView()
}
}
#endif



class ListViewModel: ObservableObject {

@Published var items = ["item1", "item2", "item3", "item4", "item5","item6"]

func addItem(){
items.append("item7")
}
}

关于swiftui - 如何在 SwiftUI 中更新列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56765187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com