2017-01-04 21 views
0

ボタンを押したときにラベルを作成/表示しようとしていて、同じボタンをもう一度押したときに同じラベルを削除/隠そうとしています。私はすべてSwiftのプログラムでこれをやろうとしています。ボタンを押した後にプログラムでUILabelを削除する

label.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 

} 

)button.removeFromSuperviewを(使用して同じコードの位置にボタンを削除しようとしたときです。

+0

ラベルを作成する場所や追加する場所など、より多くのコードを表示できますか? –

+0

このコードは実行されていますか? – JohnnyAW

+0

コードを追加しました。 @JohnnyAWはい、私はlabel.backgroundColor = UIColor.redを試してみると、ボタンがクリックされたときにラベルイメージが赤色に変わるので、実行されていると信じています – brownmamba

答えて

1

これは明らかにフィックスであったので、私は答えとしてそれをドロップします。

ボタンに新しいターゲットを追加する前に、button.removeTarget(nil, action: nil, for: .allEvents)を追加してください。

現在のターゲットを削除しないと、複数のターゲットがあり、ボタンを押すたびにpressCheck()pressUnCheck()の両方を呼び出すことになります。

0

これを処理するためのいくつかの方法があります...あなたはそれを非表示にする場合、あなたは真の

label.isHidden =を使用することができます - ラベルを非表示にします。 label.isHidden = false - ラベルを表示します。

関連する問題