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?
试试这个:如果有任何无效字段,则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)