簡體   English   中英

動態生成按鈕並在單擊下一個按鈕時刪除所有按鈕生成

[英]Dynamically generate button and remove all button generate when next button is click

我想在for循環上動態創建按鈕。 當循環運行時,假設它運行了3次,我想創建3個按鈕,當完成時,當我單擊下一個按鈕時,應刪除這些按鈕並根據循環次數創建新按鈕。 多數民眾贊成在我的問題,我已經嘗試了好幾天沒有運氣有人可以幫助我,或者最好的解決方案,謝謝提前。 我也正在快速查看這篇文章,以編程方式快速刪除UIButton,但是我仍然無法完成。 請在下面查看我的代碼:

func createButton(){

    let button = UIButton()

     button.frame = CGRect(x: 15, y: buttonY, width: 200, height: 30)
     buttonY = self.buttonY + 50
     button.setTitle("Button", for: UIControlState.normal)
     button.layer.cornerRadius = 10
     button.backgroundColor = UIColor.blue
     button.backgroundColor = .green
     button.addTarget(self, action: #selector(buttonAction), for: UIControlEvents.touchUpInside)
     view.addSubview(button)

     //buton.removeFromSuperview()
}

@objc func buttonAction(sender: UIButton!) {
     print("Button tapped: ")
 }

@IBAction func nextButton(_ sender: Any) {

   test(value: "remove")
}



func generateButton(){
 for i in 1...3{
  createButton()
 }

}

func generateButton(){
 for i in 1...3{
  createButton()
 }

}

這是一種方法,但其他方法取決於您使用按鈕的方式。

首先,您需要保留對您創建的按鈕的引用,以便以后可以將其刪除,以便在您的類中添加一個實例變量,如下所示:

var buttonList: [UIButton] = []

然后更改您的createButton方法以返回其創建的按鈕,如下所示:

func createButton() -> UIButton {

    let button = UIButton()

     button.frame = CGRect(x: 15, y: buttonY, width: 200, height: 30)
     buttonY = self.buttonY + 50
     button.setTitle("Button", for: UIControlState.normal)
     button.layer.cornerRadius = 10
     button.backgroundColor = UIColor.blue
     button.backgroundColor = .green
     button.addTarget(self, action: #selector(buttonAction), for: UIControlEvents.touchUpInside)
     view.addSubview(button)

    return button
}

然后,您可以使用以下函數來生成按鈕並刪除按鈕並根據需要調用它們:

func generateButtons() {
    for loop in 0..<3 {
        self.buttonList.append(self.createButton())
    }
}

func removeButtons() {
    for button in self.buttonList {
        button.removeFromSuperview()
    }
    self.buttonList.removeAll()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM