Foreach循环仅验证第一个元素

Tom*_*pee 1 c# validation foreach if-statement xamarin.ios

我正在TextFields使用foreach带有if/else语句的循环进行验证.这一切都发生在一个public virtual Boolean Method().只验证了第一个元素,我不知道为什么其余元素未经过验证.

我如何更改我的方法,以便验证所有项目TextFieldList

这是我的方法:

public virtual Boolean ValidateTextFields(){

    foreach (UITextField item in TextFieldList) {
        if (item.Text == "") {
            item.AttributedPlaceholder = new NSAttributedString (item.Placeholder, foregroundColor: UIColor.Red);
            return false;
        } else {
            return true;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我得到了它的工作,但现在我有另一个问题,我有多种方法ValidateTextFields,我检查它们像这样:

if (ValidateTextFields() && ValidateEmail() ) {
    Console.WriteLine ("CONTINUE TO NEXT SCREEN");
} else {
    Console.WriteLine ("ERRORRRRRR");
}
Run Code Online (Sandbox Code Playgroud)

现在如果ValidateTextFields()是,false那么ValidateEmail()永远不会被调用,所以EmailTextFields不会被验证.只有经过ValidateTextFields()就是true我可以验证ValidateEmail().有没有办法同时调用这两种方法并检查它们是否是true

Onl*_*ind 9

试试这个:如果有任何无效字段,则Method返回false,否则如果所有字段都有效则返回true.

  public virtual Boolean ValidateTextFields(){

        foreach (UITextField item in TextFieldList) {
            if (item.Text == "") {
                item.AttributedPlaceholder = new NSAttributedString (item.Placeholder, foregroundColor: UIColor.Red);
                return false;
            } 
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

或者,您可以对所有itens有效,为每个项目放置一个attributesplaceholder,如果有任何无效,则返回,如下所示:

  public virtual Boolean ValidateTextFields(){
        bool hasInvalidFields = false;
        foreach (UITextField item in TextFieldList) {
            if (item.Text == "") {
                item.AttributedPlaceholder = new NSAttributedString (item.Placeholder, foregroundColor: UIColor.Red);
                hasInvalidFields = true;
            } 
        }
        return !hasInvalidFields;
    }
Run Code Online (Sandbox Code Playgroud)

要进行编辑,要调用所有验证,您可以:

bool validTextFields = ValidateTextFields();
bool validEmails = ValidateEmail();

if ( validTextFields &&  validEmails) {
    Console.WriteLine ("CONTINUE TO NEXT SCREEN");
} else {
    Console.WriteLine ("ERRORRRRRR");
}
Run Code Online (Sandbox Code Playgroud)