如何解决计算 swift 数组中选定按钮的数量
我有 4 个定制的切换按钮。用户可以选择多个按钮并切换同一个按钮,但必须始终至少选择 1 个按钮。
如果选择了 4 个按钮中的 1 个,则无法将所选按钮切换为取消选择。
我正在寻找一种方法来确定此逻辑。我的想法是简单地统计按钮数组中被选中的项目,如果只选中了1个,则通过return退出。
这是我的进步
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
}
有没有办法计算buttonArray中选中按钮的数量?
解决方法
也许是一个变量 Prelude> pi_approx 1
2.449489742783178
Prelude> pi_approx 2
2.7386127875258306
Prelude> pi_approx 10
3.04936163598207
Prelude> pi_approx 20
3.094669524113704
Prelude> pi_approx 100
3.1320765318091053
Prelude> pi_approx 200
3.136826306330968
Prelude> pi_approx 1000
3.1406380562059946
来跟踪所选按钮的数量?如果等于 1,则返回:
numberOfSelected
,
在我的操场上:
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 otherCount = buttonArray // 2
.filter(\.isSelected)
.reduce(0) { count,_ in
count.advanced(by: 1)
}
但是如果您真正想知道的是是否至少选择了一个按钮,您可以直接执行:
let atLeastOneButtonSelected = !buttonArray
.map(\.isSelected)
.filter { $0 }
.isEmpty
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。