2012-01-26 145 views
9

我有一堆UITextFields,用户在按提交按钮之前必须输入一个数字(键盘是数字键盘)。当按下提交按钮时,会调用一个“检查”方法来检查数据是否有效......也就是说不是空的。现在,如果它只是一个textField,但是我有14,那么这很容易。我想要一个简单的if语句来检查其中一个字段或所有字段是否为空...如何检查UITextFields是否为空?

我有以下UITextFields声明:number1,number2,number3等etc等 和我有以下字符串宣布哪些可以采取值UITextField.text ...他们宣布:temp1,temp2,temp3等...

我将如何如果声明像下面那样,那么去制作一个伪代码?

感谢

if (!valid) 
{ 

NSLog (@"not valid) 
} 

else 
{ 
//proceed to next method 
} 

回答

25

我假设UITextField变量为* tfield所以这里是解决方案

if (tfield.text.length > 0 || tfield.text != nil || ![tfield.text isEqual:@""]) 
{ 
    //do your work 
} 
else 
{ 
    //through error 
} 
+0

这将如何工作,因为不是所有的UITextField变量都可以命名为* tfield?谢谢 – Teddy13

+0

textFieldShouldReturn:(UITextField *)tfield使用这个委托函数nad把上面的代码放在它里面检查用户按下回车键 –

+0

这应该用&&代替或者|| – user1686342

0
you can put like this 


    if(![temp1 isEqualToString:@""] && ![temp2 isEqualToString:@""] ... ![temp14 isEqualToString:@""]) 
    { 
    NSLog (@" valid); 
    } 
    else 
    {NSLog (@"not valid); 
} 
+0

这不是错误的方式吗?如果全部不等于'@“”'那么它是有效的。 – mattjgalloway

+0

是的,我有正确的 –

7

我觉得这样的事情是你想要的。它只是使用isEqualToString:来检查字符串是否为空。

NSString *temp1 = number1.text; 
NSString *temp2 = number2.text; 
... ///< temp3, etc 

if ([temp1 isEqualToString:@""]) { 
    // temp1 not valid 
} else if ([temp2 isEqualToString:@""]) { 
    // temp2 not valid 
} ... { 
    // temp3, etc 
} else { 
    // Valid 
} 

你可能想抓住temp1时使@" "也将是空白修剪空白字符。对于这一点,看看NSString就像这样stringByTrimmingCharactersInSet:方法:

NSString *temp1 = [number1.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 

更新:

如果你想用一个数组,你可以不喜欢这样做:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:0]; 
[array addObject:number1.text]; 
[array addObject:number2.text]; 
... ///< number3, etc 

BOOL ok = YES; 
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([obj isEqualToString:@""]) { 
     ok = NO; 
     *stop = YES; 
    } 
}]; 

if (ok) { 
    // Valid 
} else { 
    // Not valid 
} 
+0

谢谢,但不是我想到的...有没有更简单的方法,如可能把所有的人放入数组,然后检查数组是否包含空字符串? – Teddy13

+0

这不会比写出更快。你必须遍历数组,看看是否有任何字符串是空的。取决于你有多少。 – mattjgalloway

+0

@泰迪13添加了一个数组的方式,如果你真的想这样做。 – mattjgalloway

1

像这样的事情会通过你的UITextFields迭代:

[self.view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([obj isKindOfClass:[UITextField class]]) { 
    // do your checks 
    } 
}]; 
5

,或者你可以只调用

[myTextField hasText]; 

将返回NO,如果该字段为空。