Swift 单选按钮 - 复选框 - Swift 3

Posted

技术标签:

【中文标题】Swift 单选按钮 - 复选框 - Swift 3【英文标题】:Swift Radio Buttons - CheckBoxes - Swift 3 【发布时间】:2017-01-20 21:13:06 【问题描述】:

我在 Swift 3 上工作,我正在尝试制作类似于单选按钮的复选框。我解释自己:我有 8 个按钮;每个都有一个“未检查”图像和一个“已检查”图像。我希望当时只选择 1 个按钮(因此,显示 ITS“已检查”图像)。单选按钮的原理。 所以我尝试在每个按钮上使用@IBAction,我有这个:

@IBAction func tona1_changed(_ sender: Any) 
 if test_tona1.isSelected == true
        
            test_tona1.setBackgroundImage(UIImage(named: "0b_unchecked"), for: UIControlState.normal)

            test_tona1.isSelected = false
        
        else
        
            test_tona1.setBackgroundImage(UIImage(named: "0b_checked"), for: UIControlState.normal)

            test_tona1.isSelected = true
        

它实际上使图像在“取消选中”和“选中”之间切换,但我根本不知道如何使其与其他按钮交互。 我尝试使用带有按钮标签的数组,但我没有工作。我也尝试过上课,但我不知道它是如何工作的。 谢谢!

【问题讨论】:

【参考方案1】:

您可以通过多种方式实现这一目标。最简单的方法之一是:

有一个数据源。大多数时候是一个数组。 为数据源中的每个项目创建一个 UIButton,并将每个按钮插入另一个数组。每个按钮都有一个对应的标签 数组的索引。还为选定状态和正常设置不同的图像。

为每个按钮添加一个动作,目标函数类似于:

func buttonPressed(sender:UIButton) 
    for button in buttons 
        button.isSelected = false
        // deselect your model datasource[button.tag]
    

    sender.isSelected = true
    // select your model datasource[button.tag]

我将抽象/改进/安全留给您。关键点只是使用按钮集合,遍历它们,并相应地选择/取消选择它们,并且每次都使用大的 if/else 检查按钮标签。

【讨论】:

他还可以选择所有按钮并将其作为Outlet Collection 从界面构建器抓取到代码 是的,但是这样做要小心,因为 Outlet Collection 不能确保遵守订单。您必须按 viewDidLoad 上的标签对其进行排序,这可能看起来有点“hacky”。​​

以上是关于Swift 单选按钮 - 复选框 - Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

UIButton状态在用多个部分滚动tableview时改变 - Swift

UIButton 状态在滚动带有多个部分的 tableview 时发生变化 - Swift

swift中实现单选按钮

我需要帮助使用 Swift 在视图控制器中创建两个单选按钮

swift 单选按钮ios

swift 单选按钮