[英]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.