2016-04-10 11 views
1

Ich habe eine UIButton, die nur manchmal angezeigt werden sollte. Im viewDidLayoutSubviews habe ich folgendes:Kann eine Schaltfläche außer in ViewDidLayoutSubviews() nicht anzeigen

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

aber wenn ich versuche, clearButtonOutlet.hidden = false in anderen Orten zu tun, wird die Taste nicht erneut angezeigt.

Zuerst dachte ich, vielleicht waren meine Zwänge vermasselt, aber das macht die Taste wieder auftauchen:

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

Warum kann ich nicht die Taste an anderen Orten wieder machen?

EDIT 1: Wo ich den Knopf wieder erscheinen zu machen versuchen:

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

Können Sie den Code posten, der nicht funktioniert? Vorzugsweise die Vorspeiseklasse. –

Antwort

2

Nur es versteckte Einstellung wird alles nicht tun, müssen Sie die Ansicht erhalten neu zu zeichnen. Ich würde clearButton.hidden = true einstellen, wenn Sie die Schaltfläche nicht in viewDidLayout erstellen, oder es wird immer ausgeblendet, wenn die Ansicht wieder ausgebreitet (Größe auf iPad oder Querformat). Dann würde ich in Ihrer textFieldDidBeginEditing Methode die clearButton.hidden = false wie Sie haben und dann view.setNeedsLayout() aufrufen, um es zu relayout und zeichnen zu zwingen.

Verwandte Themen