SwiftUI:从列表中的项目获取切换状态

时间:2020-04-02 14:42:13

标签: list swiftui

我正在构建一个应用程序,其中我在视图内生成一个动态列表,该列表内的项目具有一个切换按钮。如果按下父视图中的按钮,并且所有项目均已激活其切换。然后进行功能。

如何在按下按钮时获取所有列表项的@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") }

  }
}

1 个答案:

答案 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)将允许您存储和跟踪对象的切换状态。