我有一个View1,它有一个列表,一个View2的Navigation按钮,以及一个基于数组中项目的数组,它将创建行。
在View2中,我有一个项目列表。
我希望用户转到View2并选择项目,然后将其添加到存在于View1的数组中。然后,View1将使用新添加的项目进行更新。
问题是关于将项目从一个视图传递到另一个视图。如果用户单击项目时View2返回View1,那也很好。
这是我尝试创建的不起作用的内容:
查看1
struct ContentView: View {
@State private var newItems : Array = []
var body: some View {
NavigationView {
List(){
Section(header:
HStack{
Image(systemName: "plus.square.fill")
Text("Find Items")
})
{
NavigationLink( destination: MyListView(newItems: self.$newItems) ){
Text("Add Items")
}
}
Section(header:
HStack{ Text("Items") }
) {
ForEach(newItems, id: \.self){ item in
Text("\(item)")
}
}
}
.navigationBarTitle("Items List")
.listStyle(GroupedListStyle())
}
}
}
查看2
struct MyListView: View {
@Binding var newItems: Array = []
var myArray = [1, 2, 3, 4]
var body: some View {
List(myArray, id: \.self ){i in
HStack{
Image(systemName: "photo")
Text("\(i)").font(.headline)
}.onTapGesture {
self.newItems.append(i)
print(self.newItems.count)
}
}
}
}
任何想法如何解决这个问题?
提前致谢
更改:
struct MyListView: View {
@Binding var newItems: Array = []
至:
struct MyListView: View {
@Binding var newItems: Array
问题是在MyListView中,您将绑定数组替换为其他本地空数组。
传递@Binding
值时,切勿在目标视图中初始化它!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句