如何在按钮点击时显示哪个文本字段为空?

时间:2016-05-24 05:21:54

标签: ios objective-c

我有很多文本字段,在提交按钮上单击我想显示一条包含空文本字段名称的警报消息,如果有条件,不用键入长行的任何方便的方法吗?

enter image description here

5 个答案:

答案 0 :(得分:1)

有两种方法:

1)如果你有每个文本字段的出口,那么你可以使用if-else来检查

if (self.textField.text.length > 0) {
    NSLog(@"textField is not empty");
}

2)您可以通过调用subviews方法获取数组中的所有子视图。所以你可以创建一个类型为BOOL的返回类型的方法,

-(BOOL)checkTextFieldIsEmpty{
    NSArray *arr = [self.view subviews];

    for (int i = 0; i < arr.count; i++) {
        if ([[arr objectAtIndex:i] isKindOfClass:[UITextField class]]) {
            UITextField *tempTextField = (UITextField*)[arr objectAtIndex:i];

            if (tempTextField.text.length >0) {
                NSLog(@"textfield is not empty");
            }
            else{
                NSLog(@"textfield is empty");
                return NO;
            }
        }
    }

    return YES;
}

然后您可以在提交按钮单击时调用该方法。如果任何文本字段为空,则它将返回NO其他YES。如果你得到了,那就再往前走吧。

更新:

如果要在alertview上显示空textField列表,则可以执行类似

的操作
 -(void)checkTextFieldIsEmpty{

NSArray *arr = [self.view subviews];

NSString *emptyTextFieldName = [[NSString alloc]init];

for (int i = 0; i < arr.count; i++) {


    if ([[arr objectAtIndex:i] isKindOfClass:[UITextField class]]) {


        UITextField *tempTextField = (UITextField*)[arr objectAtIndex:i];

        if (tempTextField.text.length >0) {

            NSLog(@"textfield is not empty");
        }
        else{


            NSLog(@"textfield is empty");

            emptyTextFieldName = [emptyTextFieldName stringByAppendingString:[NSString stringWithFormat:@"%@, ",tempTextField.placeholder]];

        }


    }

}

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Empty TextFiel" message:emptyTextFieldName delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];

[alert show];

}

答案 1 :(得分:0)

可以像下面一样简单吗?

NSString *errorMessage = @"Please fill data for below fields.";
int isError = 0;

if (postalCode.text.length==0) {
    errorMessage = [NSString stringWithFormat:@"%@\n\n%@", errorMessage, @"Postal Code"];
    isError++;
}
if (industry.text.length==0) {
    errorMessage = [NSString stringWithFormat:@"%@\n\n%@", errorMessage, @"Industry"];
    isError++;
}

// now do these steps for all fields.

if (isError>=1) {
    // show alert with errorMessage
    // also if you specify how many fields are missed, you can use isError variable
}

答案 2 :(得分:0)

您可以采取两种方法,具体取决于您认为的名称。

1)如果屏幕截图中显示的占位符文字是名称,或者距离所需名称足够近,则只需使用该名称即可。迭代文本字段,直到找到空字段,然后根据其占位符文本显示警告。

NSArray *textfields = @[
    self.textfield1,
    self.textfield2,
];

for (UITextField *tf in textfields) {
    if (tf.text.length == 0) {
        // Show alert with tf.placeholder
        break;
    }
}

2)如果您需要特定名称,可以构建一个将名称映射到其文本字段的字典。然后迭代字典,寻找合适的文本字段。

NSDictionary<NSString *, UITextField *> *textfieldNameMap = @{
    @"Name 1" : self.textfield1,
    @"Name 2" : self.textfield2,
};

[textfieldNameMap enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    NSString *name = (NSString *)key;
    UITextField *tf = (UITextField *)obj;
    if (tf.text.length == 0) {
       // Show alert using name
       *stop = YES;
    }
}

请注意,字典不能使用UITextField作为键,因为该类不符合NSCopying。另请注意,找到文本字段的顺序不确定。

答案 3 :(得分:0)

You can use this code for every text field of view controller in the     button action block. Something like this -                                                                          


@IBAction func SubmitButtonAction(sender: UIButton) 
 {
   if (textField.text.isEmpty)
    {
          let alert = UIAlertView()
          alert.title = "No Text"
          alert.message = "Please Enter Text In The Box"
          alert.addButtonWithTitle("Ok")
          alert.show()
    }
 }  

答案 4 :(得分:-1)

我后来发现现在没办法做到这一点。