将数组中的 UIbuttons 切换为 select / deselect

Toggling UIbuttons in an array to select / deselect

我有一组 5 个不同的按钮插座。当按下任何按钮时,该按钮应该首先被 selected,然后数组中的每个其他按钮都应该被​​ deselected。

这是我目前的进度:

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 按钮(使用 select.isSelected = true),然后遍历按钮数组以确定它是否 selected。如果它不是 selected(意味着它没有被按下),那么它应该将 isSelected 更改为 false。

问题是每个按下的按钮都会变为 selected,然后在按下其他按钮后仍然保持 selected。

我如何设置开关,使点击的按钮首先得到 selected,然后所有其他按钮(selected 按钮除外)得到 deselected? 注意:由于要运行动画,因此按顺序排列很重要。

如果按钮与 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({ [=11=].isSelected && [=11=] !== select }).forEach { [=11=].isSelected = false }
}