问题描述
下面的代码是多选和单选的逻辑。我这样做的方法是设置一些数组,然后通过 onTapGesture 将元素附加到其中。 我的问题是,这种实现是否可以接受?否则,有什么更好的方法吗?
谢谢
enum IconSelection {
case single,multi
}
@State var blocks: [Int] = [0,1,2,3,4]
@State var selections: [Int] = []
@State var enumSelected : IconSelection = .single
...
ScrollView(.horizontal){
HStack {
ForEach(self.blocks,id: \.self) { i in
vstack {
Block(id: i,isSelected: self.selections.contains(i),enumSelected: $enumSelected)
.onTapGesture {
switch enumSelected {
case .single :
if self.selections.count >= 1 {
self.selections.removeAll()
self.selections.append(i)
} else {
self.selections.append(i)
}
case .multi :
if self.selections.contains(i) {
self.selections.removeAll(where: { $0 == i })
} else {
self.selections.append(i)
}
}
}
.padding([.horizontal,.bottom],10)
}
.animation(.spring())
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)