2017-06-27 1 views
0

Ich möchte ein Popup-Menü erstellen, das eine UIView ist, die eine Reihe von Schaltflächen enthält, die nebeneinander existieren sollten. Stattdessen sind sie alle aufeinander gestapelt, obwohl ich center.x dynamisch ändere. Dies ist mein Code-Schnipsel:Wie platziere ich die Schaltflächen in einem erstellten Array?

func createPopUpView(number: Int) -> UIView{ 
    let popUpView: UIView = UIView() 
    var buttons: [UIButton] = [UIButton]() 
    let button: UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 32, height:42)) 
    button.backgroundColor = UIColor.black 
    button.layer.cornerRadius = 5 
    for i in 0..<number { 
     buttons.append(button) 
     buttons[i].setTitle(String(i), for: .normal) 
     buttons[i].center.x += 32 
     popUpView.addSubview(buttons[i]) 
    }  
    return popUpView   
} 

Vielen Dank.

+0

'lassen Taste: UIButton = UIButton (Rahmen: CGRect (x: i * 32, y: 0, width: 32, height: 42)) statt dessen, und lege es in die for-Schleife. – Larme

+0

Sind Sie * sicher * werden die "Buttons" * "übereinander gestapelt" *? Spoiler: Das sind sie nicht. Du hast nur 1 Knopf. Nur weil Sie es wiederholt an ein Array anhängen, heißt das nicht, dass Sie Kopien davon erstellen. – DonMag

Antwort

0

Sie müssen jedes Mal eine neue Schaltfläche durch die Schleife erstellen. Außerdem müssen einen Rahmen liefern, wenn Sie Ihre popUpView erstellen ...

es so versuchen:

func createPopUpView(number: Int) -> UIView{ 
    let popUpView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: number * 32, height: 42)) 
    for i in 0..<number { 
     let button: UIButton = UIButton(frame: CGRect(x: i * 32, y: 0, width: 32, height:42)) 
     button.backgroundColor = UIColor.black 
     button.layer.cornerRadius = 5 
     button.setTitle(String(i), for: .normal) 
     popUpView.addSubview(button) 
    } 
    return popUpView 
} 
+0

Ich sehe! Vielen Dank! Ich fang einfach an .... –

Verwandte Themen