2016-06-02 2 views
0

So habe ich einen ViewController mit drei UITextFields. Ich möchte nicht, dass der Benutzer klicken kann, wenn alle drei UITextFields> 0 sind.doneBarButton.enabled mit einer && Anweisung

Dies ist der Code, den ich habe. Ich erhalte keine Fehler, aber die Schaltfläche Fertig (barButtonItem) bleibt ausgegraut, auch wenn ich etwas in jedes der drei UITextFields gelegt habe. Was mache ich falsch?

func allTextFields(dateTextField: UITextField, numberOfLitersTextField: UITextField, costPerLiterTextField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementsString string: String) -> Bool { 


    let oldText: NSString = dateTextField.text! 
    let oldText2: NSString = numberOfLitersTextField.text! 
    let oldText3: NSString = costPerLiterTextField.text! 
    let newText: NSString = oldText.stringByReplacingCharactersInRange(range, withString: string) 
    let newText2: NSString = oldText2.stringByReplacingCharactersInRange(range, withString: string) 
    let newText3: NSString = oldText3.stringByReplacingCharactersInRange(range, withString: string) 

    doneBarButton.enabled = (newText.length > 0 && newText2.length > 0 && newText3.length > 0) 

    return true 
} 
+0

Wann rufen Sie diese Funktion an? – ZGski

+0

Setzen Sie einen Haltepunkt auf die 'doneBarButton.enabled = ... 'Zeile und sehen Sie, was der Wert von' newText', 'newText2' und' newText3' ist. – rmaddy

+0

@ZGski Ich habe meinen ViewController als UITextFieldDelegate gesetzt –

Antwort

0

würde ich wahrscheinlich etwas ähnlich wie diese stattdessen tun:

func validateTextFields() -> Bool { 
    guard 
     let dateText = dateTextField.text, 
     let numberOfLitersText = numberOfLitersTextField.text, 
     let costPerLiterText = costPerLiterTextField.text 
     where !dateText.isEmpty && !numberOfLitersText.isEmpty && !costPerLiterText.isEmpty else { return false } 
    return true 
} 

und setzen ihn nur innerhalb des UITextField Delegatmethode, die ich nehme an, Sie verwenden, und rufen Sie einfach

doneBarButton.enabled = validateTextFields()

Ich denke, das wird funktionieren, wie Sie es wollen.

Verwandte Themen