如何检查UITextFields是否为空?

11
我有一系列的UITextFields,用户必须在按下提交按钮之前输入一个数字(键盘是数字键盘)。 当按下提交按钮时,将调用“check”方法,该方法想要检查数据是否有效,即不为空。 如果只有一个textField,则这将很容易,但我有14个。 我想要一个简单的if语句来检查一个或多个字段是否为空...
我声明了以下UITextFields:number1,number2,number3等等 我还声明了以下字符串,它们可以取UITextField.text的值...它们被声明为:temp1,temp2,temp3等等...
如何创建像下面这样的伪代码if语句?
谢谢
 if (!valid)
 {

NSLog (@"not valid)
} 

 else
{
 //proceed to next method
}
6个回答

27

我假设一个名为*tfield的UITextField变量,以下是解决方案:

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

这怎么可能实现,因为并非我所有的UITextField变量都可以命名为*tfield?谢谢 - Teddy13
使用textFieldShouldReturn:(UITextField *)tfield代理函数,并将上述代码放入其中,以在用户按下返回按钮后进行检查。 - Assad Ullah
应该使用 && 而不是 ||。 - user1686342

10

或者你可以直接打电话

[myTextField hasText];
如果字段为空,它将返回NO。

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时,您可能希望修剪空格字符,以便@" "也将为空白。为此,请查看NSStringstringByTrimmingCharactersInSet:方法,如下所示:

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
}

谢谢,但这不是我想要的...是否有更简单的方法,比如将它们全部放入一个数组中,然后检查该数组是否包含空字符串? - Teddy13
不是比写出来快得多。你必须循环遍历数组并查看其中是否有任何空字符串。这取决于你有多少个字符串。 - mattjgalloway
@Teddy13提供了一种使用数组的方法,如果你真的想要的话。 - mattjgalloway
需要注意的一点是,在使用stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];方法时,最好使用whitespaceAndNewlineCharacterSet字符集,因为这样可以防止在文本字段中只有空白行时出现误报。 - user3847320

1

类似这样的代码可以遍历你的UITextFields:

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

0
you can put like this


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

这不是反过来了吗?如果所有的都不等于@"",那就是有效的。 - mattjgalloway

0

在Swift中,

您可以使用此代码块。

if textField.text?.isEmpty {

  //Return true if the textfield is empty or false if it's not empty.

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接