我如何限制调用buttonTapped函数并仅选择三个按钮的可能性?

时间:2017-02-09 19:52:42

标签: swift uibutton

是否可以同时将按钮的选择限制为仅三个按钮?我希望用户只选择3个字符特征。现在我的代码设置方式是点击按钮可将图像更改为高亮显示的图像。给人留下印象。我想一次只选择三个按钮。

{{1}}

2 个答案:

答案 0 :(得分:1)

如果您将按钮括在UIView内,则可以使用此视图的子视图迭代按钮,这样可以使事情变得更容易一些。没有必要将每个按钮都设为插座,但如果您选择不这样做,则必须在故事板中设置.normal.selected图像。

一旦你有一个只包含按钮的视图,你就可以创建一个计算属性,它返回一个UIButton的映射数组,以及一个告诉你当前选择了多少个按钮的属性。

// MARK: Outlets

@IBOutlet weak var traitButtonsView: UIView?

// MARK: Properties

var traitsSelected: Int {
    return traitButtons.filter { $0.isSelected }.count
}
var traitButtons: [UIButton] {
    return traitButtonsView?.subviews.flatMap { $0 as? UIButton } ?? []
}

// MARK: Actions

func buttonTapped(sender: UIButton) {
    if traitsSelected < 3 || sender.isSelected {
        sender.isSelected = !sender.isSelected
    }
}

答案 1 :(得分:0)

每次按下按钮时,你都可以保留一些递增和递减的计数器。

var counter = 0;

func buttonTapped(sender:UIButton) { 
    if sender.isSelected {
        counter += 1
    }
    else {
        counter -= 1
    }

    if counter > 3 {
        return;
    }
    sender.isSelected = !sender.isSelected;
}