Swiftui按钮切换

时间:2020-08-23 11:08:55

标签: ios swiftui

我有一系列这样的按钮:

ForEach(context.items){item in
    Button(action: {
        self.variableSelection.toggle()
    }) {
        Text("\(item)")
        if self.variableSelection{
            Text("Extra text")
        }
        
    }
    
}

正在发生的是: 出现项目列表,当我单击一个按钮时,每个按钮的底部都会出现“额外文本”。

我想让“多余的文字”仅出现在我单击的按钮下方。我该如何实现?

谢谢

1 个答案:

答案 0 :(得分:1)

将行提取到单独的视图中,因此每一行都有自己的展开/折叠状态,例如

struct ItemRowView: View {
  let item: String

  @State private var variableSelection = false

  var body: some View {
    Button(action: {
        self.variableSelection.toggle()
    }) {
        Text("\(item)")
        if self.variableSelection{
            Text("Extra text")
        }
        
    }
  }
}

所以现在循环

ForEach(context.items){item in
   ItemRowView(item: item)    
}