2016-08-03 65 views
0

Ich habe eine Stapelansicht, in der ich die Schaltflächen dynamisch hinzufüge. Aber ich muss die Tasten basierend auf der Bedingung wie folgt hinzufügen:Wie platziert man die Schaltflächen in UIStackView neben anderen basierend auf Bedingung?

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) 
    } 

Hier meine Schaltflächen hinzufügen, aber an einer bestimmten Position in Stackview. Meine Anforderung ist, dass zum Beispiel, wenn Button1-Bedingung nicht erfüllt ist, dann sollte 2. Button an der Stelle der ersten so kommen ??

die Tasten sollten wie Radiobuttons verhalten

Antwort

1

Sie diesen Code verwenden können:

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) 
} 
+0

seine nicht in allen Bedingungen. sagen Sie zum Beispiel, wenn meine zwei oder mehr button1, button2 nur dann erfüllt ist, dann wird der button1 an erster Stelle stehen, aber wat über button2. es wird immer noch die Position 270 erhalten und die Schaltfläche wird mit dem Leerzeichen angezeigt. –

+0

Ihr Code funktioniert nur, wenn 1 Taste fehlt –

+0

Überprüfen Sie den Code erneut. Ich habe es nicht ausgeführt. Es sollte jetzt richtig laufen – ADK