2016-04-10 9 views
1

UIButton私は時々のみ表示されるべきです。私は他の場所でclearButtonOutlet.hidden = falseをしようとするときViewDidLayoutSubviews()以外のボタンを再表示することはできません

override func viewDidLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    clearButtonOutlet.hidden = true 

しかし、ボタンが再表示されません。viewDidLayoutSubviewsで、私は次のようでした。まず

私は多分私の制約が台無しと思っていたが、これは、ボタンを再表示可能:

override func viewDidLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    clearButtonOutlet.hidden = true 
    clearButtonOutlet.hidden = false 

なぜ私はボタンが他の場所に再表示させることができませんの?

EDIT 1:私は、ボタンを再表示させるにしようとしています:

func textFieldDidBeginEditing(textField: UITextField) { 

    //some stuff 
    switch textField.tag { 

     //tag = 3 is the when I want the clear button to show 
    case 3: 
     //launch the date picker 
     launchDatePicker(textField) 

     //once DatePicker is launched, show the clear button 
     clearButtonOutlet.hidden = false 
    default: break 
    } 
+0

問題のコードを投稿できますか?好ましくは、エントリークラス。 –

答えて

2

だけ隠され、それを設定すると、すべてを行うことはありません、あなたは再描画するビューを取得する必要があります。 viewDidLayoutにないボタンを作成するときにclearButton.hidden = trueを設定するか、ビューが再びレイアウトされるときに常に非表示にします(iPadまたは横長の向きのサイズ変更)。それであなたのtextFieldDidBeginEditingの方法では、あなたが持っているようにclearButton.hidden = falseを設定し、次にview.setNeedsLayout()に電話をかけて、それを再レイアウトして描きます。

関連する問題