我想在for循环中动态创建按钮。当循环运行时,假设它运行3次我想创建3个按钮,当完成后,当我单击下一个按钮时,它应该删除这些按钮并根据它循环的次数创建新按钮。多数民众赞成我的问题,我已经尝试了几天没有运气可以有人帮助我,或者问题的最佳解决方案,谢谢你的进步。 我也在查看这篇文章Remove UIButton Programmatically in swift ,但我仍然无法完成此任务。 请参阅下面的代码:
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()
}
}
答案 0 :(得分:0)
这是一种方法,但还有其他方法取决于您使用按钮的方式。
首先,您需要保留对您创建的按钮的引用,以便以后可以删除它们,以便在您的类中添加如下的实例变量:
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()
}