Arrays 计算swift数组中选定按钮的数量
我有4个定制的切换按钮。用户可以选择多个按钮并切换同一按钮,但必须始终至少有一个选定按钮 如果选择了4个按钮中的1个,则无法将所选按钮切换为取消选择 我正在寻找一种方法来确定这种逻辑。我的想法是简单地计算按钮数组中的选定项,如果只有1个选定项,则通过return进行转义 这是我的进步Arrays 计算swift数组中选定按钮的数量,arrays,swift,button,toggle,selected,Arrays,Swift,Button,Toggle,Selected,我有4个定制的切换按钮。用户可以选择多个按钮并切换同一按钮,但必须始终至少有一个选定按钮 如果选择了4个按钮中的1个,则无法将所选按钮切换为取消选择 我正在寻找一种方法来确定这种逻辑。我的想法是简单地计算按钮数组中的选定项,如果只有1个选定项,则通过return进行转义 这是我的进步 func toggleButton(button: ToggleButton){ let buttonArray = [btn1, btn2, btn3, btn4] for btn in
func toggleButton(button: ToggleButton){
let buttonArray = [btn1, btn2, btn3, btn4]
for btn in buttonArray{
// Count the amount of selected buttons in buttonArray
// if 1, return.
}
button.isSelected = !button.isSelected
}
有没有办法计算ButtonRay中所选按钮的数量?也许可以使用变量
numberOfSelected
来跟踪所选按钮的数量?如果它等于1,则返回:
var numberOfSelected = 0
let buttonArray = [btn1, btn2, btn3, btn4]
for btn in buttonArray {
if btn.isSelected {
numberOfSelected += 1
}
}
if numberOfSelected == 1 { return } /// escape via return
在我的操场上:
struct ToggleButton {
let isSelected: Bool
}
let btn1 = ToggleButton(isSelected: true)
let btn2 = ToggleButton(isSelected: false)
let btn3 = ToggleButton(isSelected: false)
let btn4 = ToggleButton(isSelected: true)
let buttonArray = [btn1, btn2, btn3, btn4]
我可以做到:
let count = buttonArray // 2
.filter(\.isSelected)
.map { _ in 1 }
.reduce(0, +)
或:
但如果您真正想知道的是,是否至少选择了一个按钮,您可以直接执行以下操作:
let atLeastOneButtonSelected = !buttonArray
.map(\.isSelected)
.filter { $0 }
.isEmpty
let atLeastOneButtonSelected = !buttonArray
.map(\.isSelected)
.filter { $0 }
.isEmpty