Swiftui :有没有比我的方式更好的方法来实现单项和多项选择项?

问题描述

下面的代码是多选和单选的逻辑。我这样做的方法是设置一些数组,然后通过 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 (将#修改为@)