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