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