首页 > 解决方案 > 在数组中切换 UIbuttons 以选择/取消选择

问题描述

我有一组 5 个不同的按钮插座。按下任何按钮时,应首先选择该按钮,然后应取消选择数组中的所有其他按钮。

这是我到目前为止的进展:

func toggleButton(select:UIButton) {
    select.isSelected = true

    let buttons = [button1, button2, button3, button4, button5]

    for button in buttons as! [UIButton] {
        if button.isSelected == true{
            button.isSelected = true
        } else {
            button.isSelected = false
        }
    }
}

我首先选择按钮(带有select.isSelected = true),然后遍历按钮数组以确定它是否被选中。如果它没有被选中(意味着它没有被按下),那么它应该将 isSelected 更改为 false。

问题是每个被按下的按钮都会变为选中状态,然后在按下其他按钮后保持选中状态。

如何设置切换,以便选择点击的按钮 FIRST,然后取消选择所有其他按钮(除了选定的按钮)?注意:由于动画正在运行,因此按该顺序很重要。

标签: arraysswiftfor-loopuibuttonselected

解决方案


select如果按钮与使用!==运算符的实例相同,则可以跳过该按钮,并且有多种方法

1) 在 for-in 循环内

func toggleButton (select: UIButton) {
    select.isSelected = true

    let buttons: [UIButton] = [button1, button2, button3, button4, button5]
    for button in buttons {
        if button.isSelected && button !== select {
            button.isSelected = false
        }
    }
}

2)过滤数组中的所需按钮

func toggleButton (select: UIButton) {
    select.isSelected = true
    let buttons: [UIButton] = [button1, button2, button3, button4, button5]
    buttons.filter({ $0.isSelected && $0 !== select }).forEach { $0.isSelected = false }
}

推荐阅读