Sup*_*oob 7 strikethrough swiftui swiftui-foreach
我正在尝试对 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.
})
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以使用 @State var 应用条件,以跟踪何时应用删除线()或不应用?我认为唯一的方法是将一个属性放入 listObject 中,以跟踪它是否被删除,然后使用该属性将 true/false 应用于 Strikethrough() 修饰符。但这看起来像意大利面条代码吗?
Asp*_*eri 11
如果你需要它持久化,那么你绝对应该将它放入模型中。否则,@State
仅适用于运行时,您可以在子视图中执行此操作,例如
ForEach(list.items) { item in
RowView(item: item)
}
Run Code Online (Sandbox Code Playgroud)
和行视图:
struct RowView: View {
let item: Your_Item_Type
@State private var stroken = false
var body: some View {
Text(item.name)
.strikethrough(stroken)
.onTapGesture(perform: {
self.stroken.toggle()
})
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4704 次 |
最近记录: |