Swift-点击按钮即可添加和删除UILabel

时间:2019-04-03 14:17:51

标签: ios swift uibutton uilabel

我创建了两个按钮,一个按钮创建一个UILabel,另一个按钮删除创建的UILabel。

点击Button1时,我正在运行一个for循环,以创建四(4)个UILabel,我能够做到这一点。

在点击Button2时,我想删除我用Button1创建的所有UILabel。

旁注:我不想隐藏UILabels,因为变量'noOfLabels'可以从4增加到15或根据要求增加任何其他数字。

这是我尝试过的。

class ViewController: UIViewController {
   var myLabel : UILabel!
   var noOfLabels = 4
    @IBAction func addButton(_ sender: Any) {

    if(myLabel != nil && !myLabel.isHidden)
    {
        myLabel.removeFromSuperview()
    }
    print("AddLabel button is Tapped")
    var yval = 0
    for i in 0...noOfLabels
    {
        myLabel = UILabel()
        myLabel.frame =  CGRect(x: 30, y: 200 + yval, width: 90, height: 50)
        myLabel.text = "Hello \(i)"
        view.addSubview(myLabel)
        yval += 80
    }
}

@IBAction func removeButton(_ sender: Any) {

    print("Remove button is Tapped")
    myLabel.removeFromSuperview()

}
override func viewDidLoad() {
    super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

使用上面的代码,我只能删除一个标签。

我需要帮助,在点击Button2时删除所有UILabel

2 个答案:

答案 0 :(得分:1)

之所以会这样,是因为您仅对上一个创建的label实例进行引用,而仅删除了该实例。您需要标签阵列才能删除所有创建的标签。

ir.config_parameter

然后,当您需要创建新标签时,也将其附加到此数组中

var labels = [UILabel]()

然后,当您需要从其超级视图中删除所有标签时,只需遍历@IBAction func addButton(_ sender: Any) { labels.forEach { $0.removeFromSuperview() } labels.removeAll() for i in 0...noOfLabels { let newLabel = UILabel(frame: CGRect(x: 30, y: 200 + (i * 80), width: 90, height: 50)) // <--- new instance newLabel.text = "Hello \(i)" view.addSubview(newLabel) labels.append(newLabel) // <--- appending to an array } } 数组

labels

答案 1 :(得分:0)

定义

var labelList: [Label] = []

addButton(_ sender: Any) {
...
view.addSubview(myLabel)
labelList.append(myLabel)
...
}


@IBAction func removeButton(_ sender: Any) {

print("Remove button is Tapped")
for i in 0...noOfLabels
{
    labelList[i].removeFromSuperview()

}
labelList = []