按下按钮后以编程方式删除UILabel

时间:2017-01-04 21:55:30

标签: swift uilabel

我正在尝试按下按钮时创建/显示标签,然后在再次按下相同的按钮时删除/隐藏相同的标签。我试图在Swift中以编程方式执行此操作。

我尝试过使用label.removeFromSuperview()但似乎没有任何效果。但是,当我尝试使用button.removeFromSuperview()

删除相同代码位置中的按钮时
var label = UILabel()
let labelImage = UIImage(named: "Strike Line.png")


/* to select checkmarked state */
func pressCheck() {

    let image = UIImage(named: "Checkmark.png")
    button.setBackgroundImage(image, for: UIControlState.normal)
    button.addTarget(self, action:#selector(self.pressUnCheck), for: .touchUpInside)
    self.view.addSubview(button)


    textField1.textColor = UIColor.gray //change textfield to a gray color

    label = UILabel(frame: CGRect(x : 31, y : 69, width: 200, height: 2))

    label.backgroundColor = UIColor(patternImage: labelImage!)
    self.view.addSubview(label)
}


func pressUnCheck()
{
    let image = UIImage(named: "To Be Completed Circle.png")
    button.setBackgroundImage(image, for: UIControlState.normal)
    button.addTarget(self, action:#selector(self.pressCheck), for: .touchUpInside)
    self.view.addSubview(button)


    label.removeFromSuperview()
    textField1.textColor = UIColor.black

}

这是我试图删除/隐藏标签的地方。

2 个答案:

答案 0 :(得分:1)

由于这显然是修复,我会把它作为答案。

在向按钮添加任何新目标之前添加 <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> var time_left = 20; var cinterval; var timestatus=1; var redirect="http://someexamplesite.com/"; function time_dec(){ time_left--; document.getElementById('countdown').innerHTML = time_left; if(time_left <=0){ window.location.href = redirect; } } function resumetime() { //time_left = 20; clearInterval(cinterval); cinterval = setInterval('time_dec()', 1000); } function defaultstart() { time_left = 20; clearInterval(cinterval); cinterval = setInterval('time_dec()', 1000); } function stopstarttime() { if(timestatus==1) { clearInterval(cinterval); document.getElementById('stopbutton').value="Start"; timestatus=0; } else { clearInterval(cinterval); cinterval = setInterval('time_dec()', 1000); document.getElementById('stopbutton').value="Stop"; timestatus=1; } } defaultstart(); </SCRIPT> </HEAD> </HEAD> <body> Redirecting In <span id="countdown">20</span>. <INPUT TYPE="button" value="stop" id="stopbutton" onclick="stopstarttime()"> </body> </HTML>

如果您不删除当前目标,则会有多个目标,并在每个按钮上同时调用button.removeTarget(nil, action: nil, for: .allEvents)pressCheck()

答案 1 :(得分:0)

有几种方法可以解决这个问题......如果你只想隐藏它,你可以使用

label.isHidden = true - 会隐藏标签。 label.isHidden = false - 将显示标签。