Pradip Kumar Pradip Kumar - 4 months ago 15
Swift Question

How to place the buttons in UIStackView next to other based on condition?

I have a stackview in which I am adding the buttons dynamically. But I need to add the buttons based on the condition like below:

if trim.contains("0"){
print("contaim 0")
let button1 = UIButton(frame: CGRect(x: 0, y: 0, 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)
}
if trim.contains("1") {
print("contaim 1")

let button2 = UIButton(frame: CGRect(x: 90, y: 0, 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)


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

let button3 = UIButton(frame: CGRect(x: 150, y: 0, 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)
}
if trim.contains("3"){
print("contaim 3")
let button4 = UIButton(frame: CGRect(x: 210, y: 0, width: 60, height: 20))

button4.setTitleColor(UIColor.blackColor(), forState: .Normal)

button4.setTitle("On", forState: .Normal)
button4.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button4.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button4)
}
if trim.contains("4"){
print("contaim 4")
let button5 = UIButton(frame: CGRect(x: 270, y: 0, width: 60, height: 20))

button5.setTitleColor(UIColor.blackColor(), forState: .Normal)

button5.setTitle("With", forState: .Normal)
button5.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button5.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button5)
}
if trim.contains("5"){
print("contaim 5")
let button6 = UIButton(frame: CGRect(x: 310, y: 0, width: 60, height: 20))

button6.setTitleColor(UIColor.blackColor(), forState: .Normal)

button6.setTitle("On Burger", forState: .Normal)
button6.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button6.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button6)
}
if trim.contains("6"){
print("contaim 6")
let button7 = UIButton(frame: CGRect(x: 370, y: 0, width: 60, height: 20))

button7.setTitleColor(UIColor.blackColor(), forState: .Normal)

button7.setTitle("On Chips", forState: .Normal)
button7.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button7.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button7)
}


here my buttons are adding but at given position in stackview. My requirement is that, for example if button1 condition is not satisfied then 2nd button should come at the place of first like that??

the buttons should behave like radiobuttons

ADK ADK
Answer

You can use this code:

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
}
if trim.contains("3"){
print("contaim 3")
let button4 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))

button4.setTitleColor(UIColor.blackColor(), forState: .Normal)

button4.setTitle("On", forState: .Normal)
button4.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button4.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button4)
posX =  posX + 60
}
if trim.contains("4"){
print("contaim 4")
let button5 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))

button5.setTitleColor(UIColor.blackColor(), forState: .Normal)

button5.setTitle("With", forState: .Normal)
button5.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button5.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button5)
posX =  posX + 60
}
if trim.contains("5"){
print("contaim 5")
let button6 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))

button6.setTitleColor(UIColor.blackColor(), forState: .Normal)

button6.setTitle("On Burger", forState: .Normal)
button6.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button6.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button6)
posX =  posX + 60
}
if trim.contains("6"){
print("contaim 6")
let button7 = UIButton(frame: CGRect(x: posX, y: posY, width: 60, height: 20))

button7.setTitleColor(UIColor.blackColor(), forState: .Normal)

button7.setTitle("On Chips", forState: .Normal)
button7.setImage(UIImage(named: "checkbox untick.png")!, forState: .Normal)
button7.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
myStackview.addSubview(button7)
}
Comments