我正在构建一个应用程序,其中我在视图内生成一个动态列表,该列表内的项目具有一个切换按钮。如果按下父视图中的按钮,并且所有项目均已激活其切换。然后进行功能。
如何在按下按钮时获取所有列表项的@state以便执行功能。
这是一些基本代码:
struct OrderView: View {
var pOrder: OrderObject
var body: some View {
VStack(alignment: .leading){
Button(action: buttonAction) { Text("myBttn") }
List(pOrder.contents, id: \.name) { item in
Child(pOrder: item)
}
}
}
}
这是子视图的代码
struct Child: View {
var pContents: Contents
@State var selected: Bool = false
var body: some View {
Toggle(isOn: $selected){ Text("Item") }
}
}
答案 0 :(得分:0)
struct ObjectOrder: Identifiable {
var id = UUID()
var order = ""
var isToggled = false
init(order: String) {
self.order = order
}
}
struct ContentView: View {
@State var pOrder = [
ObjectOrder(order: "Order1"),
ObjectOrder(order: "Order2"),
ObjectOrder(order: "Order3"),
ObjectOrder(order: "Order4"),
ObjectOrder(order: "Order5")
]
var body: some View {
List(pOrder.indices) { index in
HStack {
Text("\(self.pOrder[index].order)")
Toggle("", isOn: self.$pOrder[index].isToggled)
}
}
}
}
尝试使用.indices将为您提供数组中对象的索引。添加一个属性来跟踪切换(在上面的示例中为isToggled)将允许您存储和跟踪对象的切换状态。