微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算 swift 数组中选定按钮的数量

如何解决计算 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 举报,一经查实,本站将立刻删除。