gpt4 book ai didi

ios - 动态生成按钮并删除单击下一个按钮时生成的所有按钮

转载 作者:行者123 更新时间:2023-11-30 11:52:49 25 4
gpt4 key购买 nike

我想通过 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()
}

}

最佳答案

这是一种方法,但还有其他方法,具体取决于您使用按钮的方式。

首先,您需要保留对您创建的按钮的引用,以便稍后可以删除它们,因此在您的类中添加一个实例变量,如下所示:

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()
}

关于ios - 动态生成按钮并删除单击下一个按钮时生成的所有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com