ios - 单选按钮组 Swift 3 Xcode 8

标签 ios swift radio-button xcode8 radio-group

我搜索了各种来源,但找不到一个清晰而简单的解决方案来为 iOS 应用程序在 Swift 3 中使用 Xcode 8.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
}

但是我希望有一种更有效的方法来做到这一点。

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

最佳答案

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

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

}

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

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

// in viewDidLoad
buttons = [buttonA, buttonB, buttonC]

然后,像这样编写 buttonClick 方法:

buttons.forEach { $0.isChecked = false } // uncheck everything
sender.isChecked = true // check the button that is clicked on

备选方案:

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

如果你太懒了,试着在 cocoapods.org 上搜索一下,看看其他人做了什么。

关于ios - 单选按钮组 Swift 3 Xcode 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44839293/

相关文章:

ios - FMDB.database.beginTransaction 和 FMDB.databaseQueue.inTransaction 的区别

ios - 当 UITabbar 是半透明的并且 UIViewController 没有扩展到 tabbar 后面时,uitabbar 看起来像是覆盖了一个黑色 View

jquery - 如何查看单击了哪些单选按钮Jquery

forms - Django 脆皮表格 : Replace Label and Radio Buttons with Images

ios - 在 iPad 的全屏模式下填充主视图和细节 View

ios - 为什么当线本身加倍时连接不四舍五入?

swift - 将 NSFont 转换为 CGFont——不可能?

jquery - 选择另一个单选按钮后无法取消选中

iOS - CAShapeLayer 抗锯齿?

swift - 如何在非标准库 Swift 框架中为容器启用高级 SIL 优化?