单选按钮组 Swift 3 Xcode 8

Chr*_*bst 2 radio-group radio-button ios swift xcode8

我搜索了各种来源,但找不到一个清晰而简单的解决方案来为 iOS 应用程序使用 Xcode 8.3 在 Swift 3 中创建单选按钮组的等效项。

例如,如果一组有 3 个按钮,一次只能选择一个。目前,我通过在选择另一个按钮时将组中 2 个按钮的状态更改为未选择来实现此目的,反之亦然。

@IBAction func buttonA(_ sender: Any) {
    buttonB.isChecked = false
    buttonC.isChecked = false
}

@IBAction func buttonB(_ sender: Any) {
    buttonA.isChecked = false
    buttonC.isChecked = false
}

@IBAction func buttonC(_ sender: Any) {
    buttonA.isChecked = false
    buttonB.isChecked = false
}
Run Code Online (Sandbox Code Playgroud)

不过,我希望有一种更有效的方法来做到这一点。

任何有关更有效解决方案的帮助将不胜感激。

Swe*_*per 5

您可以将所有按钮连接IBAction到一种方法。

@IBAction func buttonClick(_ sender: UISwitch) { // you're using UISwitch I believe?

}
Run Code Online (Sandbox Code Playgroud)

您应该将所有按钮添加到一个数组中:

// at class level
var buttons: [UISwitch]!

// in viewDidLoad
buttons = [buttonA, buttonB, buttonC]
Run Code Online (Sandbox Code Playgroud)

然后,写出buttonClick这样的方法:

buttons.forEach { $0.isChecked = false } // uncheck everything
sender.isChecked = true // check the button that is clicked on
Run Code Online (Sandbox Code Playgroud)

备择方案:

尝试使用UITableView. 每一行包含一个选项。选择一行后,将该行更改accessoryType.checkMark,并将所有其他行更改为.none

如果你太懒了,可以尝试搜索一下cocoapods.org,看看其他人做了什么。