问题描述
我试图将删除线应用于ForEach循环中的所有轻击文本项:
struct BrandListView: View {
@Observedobject var list: ListObject
var body: some View {
ScrollView {
vstack {
ForEach(list.items) { items in
Text(item.name)
.strikethrough(//?)
.onTapGesture(perform: {
// on tap,apply strikethrough only to this item.
})
}
}
}
}
}
是否有一种简单的方法可以使用@State var应用条件,以跟踪何时应用strikethrough()?我在想唯一的方法是将一个属性放到listObject中以跟踪它是否被删除,然后使用该属性将true / false应用于strikethrough()修饰符。但这似乎是意大利面条代码吗?
解决方法
如果您需要持久化,那么绝对应该将其放入模型中。否则,for
仅用于运行时,您可以在子视图中进行操作,例如
@State
和RowView:
ForEach(list.items) { item in
RowView(item: item)
}