繁体   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