其他分享
首页 > 其他分享> > iOS/swift 单选框和复选框

iOS/swift 单选框和复选框

作者:互联网

/**
 复选框
 */
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

标签:String,UIKit,didSet,iOS,复选框,var,swift,UIView
来源: https://www.cnblogs.com/modentime/p/12830743.html