Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to create radio buttons dynamically in swift?

I have the following buttons which are adding dynamically based on some condition. Now i need to change all added buttons behaviour as radio buttons. so that I can do some actions based on the selection..

  var posX = 0
    var posY = 0

    if trim.contains("0"){
        print("contaim 0")
        let button1 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))
        button1.setTitleColor(UIColor.blackColor(), forState: .Normal)
        button1.setTitle("No", forState: .Normal)
        button1.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
        button1.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
        myStackview.addSubview(button1)
        posX = 60
    }
    if trim.contains("1") {
        print("contaim 1")

        let button2 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))
            button2.setTitleColor(UIColor.blackColor(), forState: .Normal)
            button2.setTitle("Less", forState: .Normal)
            button2.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
            button2.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
            myStackview.addSubview(button2)
            posX = posX + 60

    }
    if trim.contains("2"){
        print("contaim 2")

        let button3 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))
        button3.setTitleColor(UIColor.blackColor(), forState: .Normal)

        button3.setTitle("Half", forState: .Normal)
        button3.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
        button3.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
        myStackview.addSubview(button3)
        posX =  posX + 60
    }

I have set the buttonAction methods as below buts its not working

func buttonAction(sender: UIButton!) {
    print("Button tapped")
    sender.setImage(UIImage(named: "checkboxredtick.png")!, forState: .Normal)

}
like image 729
PRADIP KUMAR Avatar asked Jan 06 '23 14:01

PRADIP KUMAR


1 Answers

let buttons = [UIButton]()
// create button1
let button1 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))
button1.setTitleColor(UIColor.blackColor(), forState: .Normal)
button1.setTitle("No", forState: .Normal)
button1.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
// if the selected button cannot be reclick again, you can use .Disabled state
button1.setImage(UIImage(named: "checkboxredtick.png")!, forState: .Selected)
button1.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button1)
buttons.append(button1)
// create other buttons and add into buttons ...

func buttonAction(sender: UIButton!){
    for button in buttons {
        button.selected = false
    }
    sender.selected = true
    // you may need to know which button to trigger some action
    // let buttonIndex = buttons.indexOf(sender)
}
like image 93
SolaWing Avatar answered Jan 15 '23 00:01

SolaWing