/** 复选框 */ import UIKit class LYBmutipleSelectView: UIView { var selectindexs:[Int]=[]//选中的 //标题数组 var titleArr:[String]=[""]{ didSet{ for i in 0..<titleArr.count{ //组装按钮和label let singleselectview:UIView=UIView.init(frame: CGRect.init(x: i*100, y: 100, width: 100, height: 50)) let rightLbel:UILabel=UILabel.init(frame: CGRect.init(x: 50, y: 0, width: 50, height: 50)) rightLbel.text=titleArr[i] singleselectview.addSubview(rightLbel) let leftBtn:UIButton=UIButton.init(frame: CGRect.init(x: 10, y: 10, width: 30, height: 30)) leftBtn.tag=130+i; leftBtn.setImage(UIImage.init(named: "fuxuankuangUnselect"), for: UIControl.State.normal) leftBtn.addTarget(self, action: #selector(leftBtnClcik), for: UIControl.Event.touchUpInside) singleselectview.addSubview(leftBtn) addSubview(singleselectview) } } } override init(frame: CGRect) { super.init(frame: frame) initViews() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func initViews(){ let sureBtn:UIButton=UIButton.init(frame: CGRect.init(x: 200, y: 10, width: 100, height: 50)) sureBtn.setTitle("确认", for: UIControl.State.normal) sureBtn.setTitleColor(UIColor.black, for: UIControl.State.normal) sureBtn.addTarget(self, action: #selector(sureBtnClcik), for: UIControl.Event.touchUpInside) addSubview(sureBtn) } //确认按钮,根据选中的按钮索引做相应的操作 @objc func sureBtnClcik(){ print("\(selectindexs)") } //点击按钮选中或取消 @objc func leftBtnClcik(sender:UIButton){ sender.isSelected = !sender.isSelected let btnTag:Int=sender.tag-130 if sender.isSelected{//选中 selectindexs.append(btnTag)//吧按钮的索引存储起来 }else { //删除数组中的元素,采用过滤的方法,swift中没有现成f的方法 let fiflter:[Int]=selectindexs.filter { $0 != btnTag } selectindexs = fiflter } sender.setImage(UIImage.init(named: "fuxuankuangUnselect"), for: UIControl.State.selected) sender.setImage(UIImage.init(named: "fuxuankuangselect"), for: UIControl.State.selected) } }
/** 单选框 */ import UIKit class LYBSingleselectview: UIView { var selectindex:Int=0//选中的 var lastbtn:UIButton=UIButton.init()//保存上一个按钮 //标题数组 var titleArr:[String]=[""]{ didSet{ for i in 0..<titleArr.count{ //组装按钮和label let singleselectview:UIView=UIView.init(frame: CGRect.init(x: i*100, y: 100, width: 100, height: 50)) let rightLbel:UILabel=UILabel.init(frame: CGRect.init(x: 50, y: 0, width: 50, height: 50)) rightLbel.text=titleArr[i] singleselectview.addSubview(rightLbel) let leftBtn:UIButton=UIButton.init(frame: CGRect.init(x: 10, y: 10, width: 30, height: 30)) leftBtn.tag=130+i leftBtn.setImage(UIImage.init(named: "fuxuankuangUnselect"), for: UIControl.State.normal) leftBtn.addTarget(self, action: #selector(leftBtnClcik), for: UIControl.Event.touchUpInside) singleselectview.addSubview(leftBtn) addSubview(singleselectview) } } } override init(frame: CGRect) { super.init(frame: frame) initViews() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func initViews(){ let sureBtn:UIButton=UIButton.init(frame: CGRect.init(x: 200, y: 10, width: 100, height: 50)) sureBtn.setTitle("确认", for: UIControl.State.normal) sureBtn.setTitleColor(UIColor.black, for: UIControl.State.normal) sureBtn.addTarget(self, action: #selector(sureBtnClcik), for: UIControl.Event.touchUpInside) addSubview(sureBtn) } //确认按钮,根据选中的按钮索引做相应的操作 @objc func sureBtnClcik(){ print("\(selectindex)") } //点击按钮选中或取消 @objc func leftBtnClcik(sender:UIButton){ let btnTag:Int=sender.tag-130 sender.isSelected=true lastbtn.isSelected=false lastbtn.setImage(UIImage.init(named: "fuxuankuangUnselect"), for: UIControl.State.selected) sender.setImage(UIImage.init(named: "fuxuankuangselect"), for: UIControl.State.selected) lastbtn=sender selectindex = btnTag } }
原文链接:https://blog.csdn.net/u011146511/java/article/details/86578730