如何使用单个变量设置复选框的值
How to set the value of checkboxes with a single variable
今天 Whosebug 的朋友们好,我在 swift
中为您提出了一个优化问题
如屏幕截图所示,我的屏幕上有复选框,我必须根据是否单击它们来保存它们的值(如果选中则为真,否则为假)就我的问题而言,我解决了视觉部分将每个按钮连接到一个事件处理程序,并根据点击更改它们的图像,如下所示
@IBAction func checkBtnpressed(_ sender: UIButton) {
if sender.image(for: .normal) == UIImage(named: "imgCheckSelected") {
sender.setImage(UIImage(named: "ImgcheckBox"), for: .normal)
}else{
sender.setImage(UIImage(named: "imgCheckSelected"), for: .normal)
}
}
但是我想不出一种方法来设置它们的真值和假值,我不想定义 15 个单独的值所以我的问题是我可以只用一个布尔值来解决这个问题吗我可以使用 sender 来根据单击的次数或其他任何内容将每个按钮设置为 true 或 false。请帮我想办法
一个 UIButton 有几种状态。您已经发现了其中一种状态 .normal
。按钮可以处于的另一种状态是 .selected
。因此,可以将选中状态的图像设置为UIImage(named: "imgCheckSelected")
,将正常状态的图像设置为UIImage(named: "ImgcheckBox")
。
一旦你这样做了,在你的 checkBtnpressed(_:)
方法中,你所要做的就是改变按钮的状态。稍后,您可以查询按钮的状态以确定它是否被选中。
就是说,您确实应该在某种模型对象中表示您的状态,该模型对象中要么有 15 个布尔值,要么有一个布尔值数组。不要将视图状态用作模型。
您定义的每个按钮都可以保存复选框的状态。
您需要使用按钮的正常和选定状态。
private lazy var btnClick:UIButton = {
var btn = UIButton()
btn.setImage(UIImage(named: "ImgcheckBox"), for: .normal)
btn.setImage(UIImage(named: "imgCheckSelected"), for: .selected)
btn.addTarget(self, action: #selector(self. checkBtnpressed(btn:)), for: .touchUpInside)
return btn
}()
@objc func checkBtnpressed(btn: UIButton) {
btn.isSelected = !btn.isSelected
}
现在,当您需要所有选中的复选框时,只需遍历按钮并选择 isSelected 属性 为 true 的值。
今天 Whosebug 的朋友们好,我在 swift
如屏幕截图所示,我的屏幕上有复选框,我必须根据是否单击它们来保存它们的值(如果选中则为真,否则为假)就我的问题而言,我解决了视觉部分将每个按钮连接到一个事件处理程序,并根据点击更改它们的图像,如下所示
@IBAction func checkBtnpressed(_ sender: UIButton) {
if sender.image(for: .normal) == UIImage(named: "imgCheckSelected") {
sender.setImage(UIImage(named: "ImgcheckBox"), for: .normal)
}else{
sender.setImage(UIImage(named: "imgCheckSelected"), for: .normal)
}
}
但是我想不出一种方法来设置它们的真值和假值,我不想定义 15 个单独的值所以我的问题是我可以只用一个布尔值来解决这个问题吗我可以使用 sender 来根据单击的次数或其他任何内容将每个按钮设置为 true 或 false。请帮我想办法
一个 UIButton 有几种状态。您已经发现了其中一种状态 .normal
。按钮可以处于的另一种状态是 .selected
。因此,可以将选中状态的图像设置为UIImage(named: "imgCheckSelected")
,将正常状态的图像设置为UIImage(named: "ImgcheckBox")
。
一旦你这样做了,在你的 checkBtnpressed(_:)
方法中,你所要做的就是改变按钮的状态。稍后,您可以查询按钮的状态以确定它是否被选中。
就是说,您确实应该在某种模型对象中表示您的状态,该模型对象中要么有 15 个布尔值,要么有一个布尔值数组。不要将视图状态用作模型。
您定义的每个按钮都可以保存复选框的状态。 您需要使用按钮的正常和选定状态。
private lazy var btnClick:UIButton = {
var btn = UIButton()
btn.setImage(UIImage(named: "ImgcheckBox"), for: .normal)
btn.setImage(UIImage(named: "imgCheckSelected"), for: .selected)
btn.addTarget(self, action: #selector(self. checkBtnpressed(btn:)), for: .touchUpInside)
return btn
}()
@objc func checkBtnpressed(btn: UIButton) {
btn.isSelected = !btn.isSelected
}
现在,当您需要所有选中的复选框时,只需遍历按钮并选择 isSelected 属性 为 true 的值。