2017-08-09 1 views
-2

Ich habe eine Registrierung View-Controller, die 1) macht einen leeren Textfeld Text rot, nachdem der Benutzer hat die Schaltfläche Senden und 2) schüttelt das leere Textfeld mit einem UIView.Swift Wenn Statements

// if registered button is clicked and textfields are empty 
if usernameTxt.text!.isEmpty || passwordTxt.text!.isEmpty || emailTxt.text!.isEmpty || fullnameTxt.text!.isEmpty {  

    // display red placeholders for empty textfields 
    usernameTxt.attributedPlaceholder = NSAttributedString(string: "Username", attributes: [NSForegroundColorAttributeName: UIColor.red])  
    passwordTxt.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSForegroundColorAttributeName: UIColor.red])  
    emailTxt.attributedPlaceholder = NSAttributedString(string: "Email", attributes: [NSForegroundColorAttributeName: UIColor.red]) 
    fullnameTxt.attributedPlaceholder = NSAttributedString(string: "Full Name", attributes: 
      [NSForegroundColorAttributeName: UIColor.red]) 

} 

// shake username textfield if it is empty 
if usernameTxt.text == "" { 
    usernameTxt.shake() 
} 

// shake password textfield if it is empty 
if passwordTxt.text == "" { 
    passwordTxt.shake() 
} 

// shake email textfield if it is empty 
if emailTxt.text == "" { 
    emailTxt.shake() 
} 

// shake fullname textfield if it is empty 
if fullnameTxt.text == "" { 
    fullnameTxt.shake() 
} 

} else { 

    // remove keyboard 
    self.view.endEditing(true) 
} 

Wenn jedoch das Textfeld leer ist, ist es immer noch den roten Platzhalter-Text sowie das Textfeld Shake ausführt, aber es führt auch Code nach dem „} else {“

Hat jemand einen Vorschlag auf Schreiben Sie diesen Code so, dass der Code nach dem else nicht ausgeführt wird? Vielen Dank im Voraus

+0

Etwas stimmt nicht mit Ihrem Code ... die Klammern sind nicht ausgerichtet. So wie es ist, zeigen Sie nicht die erste if-Anweisung, an die der else angehängt ist, so dass es unmöglich ist, sie neu zu schreiben. Wenn Sie möchten, dass else nur ausgeführt wird, wenn die anderen Felder nicht leer sind: setzen Sie die ifs in Ihre erste, wenn diese prüft, ob irgendwelche leer sind, und die else sollte an die Anweisung angehängt werden, was sie derzeit nicht ist. –

+0

Ich habe gerade Ihre if-Anweisungen bearbeitet, um den richtigen Einzug hinzuzufügen. @EvanCarslake ist korrekt - nichts stimmt mit dem 'else' überein. Vermissen Sie eine "oberste Ebene" 'if'? So wie es aussieht, macht es nur Sinn, * alles * über die 'else' weitere 4 Leerzeichen einzufügen. – dfd

+0

Entschuldigung, ich habe überflüssigen Code gelöscht, um ihn kürzer zu machen. Und vergessen, eine Klammer zu entfernen – codeislife

Antwort

1

Sie müssen Ihre Bedingung an die if-Anweisung ketten. Momentan haben Sie sie getrennt. Für Beispiel:

if (condition) { 

} else { 

} 

Sonst sind sie nicht Teil der gleichen Bewertung. Zusammenfassend scheint es, dass Sie nur ein Syntaxproblem haben.

Prost.