首页 > 解决方案 > 选择和取消选择按钮集合

问题描述

我有三个名为One, Two,和的按钮,Three,以及一个buttonPressed用于收集这三个按钮的函数,如下所示。

var btnTag = [Int]()

@IBAction func buttonPressed(_ sender: UIButton) {

    guard let button = sender as UIButton? else { return }
    if(btnTag.contains((sender as AnyObject).tag!))
    {
        if let index = btnTag.index(of: (sender as AnyObject).tag!)
        {
            btnTag.remove(at: index)
        }
    }
    else
    {
       btnTag.append((sender as AnyObject).tag!)
    }

    if !button.isSelected {
        button.isSelected = true
        button.setTitleColor(.red, for: .normal)
    }
    else
    {
        button.isSelected = false
        button.setTitleColor(.white, for: .normal)
    }
}

我喜欢在单击时更改按钮的颜色,red然后在单击其他按钮时将上一个按钮颜色更改为white. 因此,如果我按下One,我想One成为red,然后当我按下时Two,我想Two成为red并且One作为white。我做了上述但它允许multiple selection并且不能进行deselect以前的更改。我该如何解决这个问题?

标签: iosswiftxcodeuibutton

解决方案


您可以简单地创建UIButton. 之后UIButton从情节提要中分配所有三个标签。

@IBOutlet var buttons: [UIButton]!

使用上面的集合并将所有按钮与 Outlet 连接。还将下面的动作与所有按钮连接起来。

@IBAction func buttonPressed(_ sender: UIButton) {
    buttons.forEach { $0.isSelected = false
        $0.setTitleColor(.white, for: .normal)
    }

    buttons[sender.tag].setTitleColor(.red, for: .normal)
    buttons[sender.tag].isSelected = true
}

推荐阅读