我有一系列这样的按钮:
ForEach(context.items){item in
Button(action: {
self.variableSelection.toggle()
}) {
Text("\(item)")
if self.variableSelection{
Text("Extra text")
}
}
}
正在发生的是: 出现项目列表,当我单击一个按钮时,每个按钮的底部都会出现“额外文本”。
我想让“多余的文字”仅出现在我单击的按钮下方。我该如何实现?
谢谢
答案 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)
}