我在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;
}
修改
我得到了它的工作,但现在我有另一个问题,我有多个方法,如ValidateTextFields
,我检查它们是这样的:
if (ValidateTextFields() && ValidateEmail() ) {
Console.WriteLine ("CONTINUE TO NEXT SCREEN");
} else {
Console.WriteLine ("ERRORRRRRR");
}
如果ValidateTextFields()
为false
,则永远不会调用ValidateEmail()
,因此EmailTextFields
无法验证。只有在ValidateTextFields()
true
之后,我才能验证ValidateEmail()
。有没有办法同时调用这两种方法并检查它们是否为true
?
答案 0 :(得分: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;
}
或者您可以对所有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;
}
对于您的编辑,您可以调用所有验证:
bool validTextFields = ValidateTextFields();
bool validEmails = ValidateEmail();
if ( validTextFields && validEmails) {
Console.WriteLine ("CONTINUE TO NEXT SCREEN");
} else {
Console.WriteLine ("ERRORRRRRR");
}
答案 1 :(得分:3)
在处理完第一个元素之后,您的代码将始终返回,无论它是否有效。
您可能想要的是验证所有元素并在之后返回 :
var result = true;
foreach (UITextField item in TextFieldList) {
if (item.Text == "") {
item.AttributedPlaceholder =
new NSAttributedString (item.Placeholder, foregroundColor: UIColor.Red);
result = false;
}
}
return result;
你只需要记住最后要返回的内容,而不是立即返回。