2016-05-24 3 views
-3

У меня есть много текстовых полей, а при нажатии кнопки «Отправить» я хочу показать предупреждающее сообщение, содержащее имена пустых текстовых полей, любой удобный способ сделать это без ввода длинных строк, если условия?Как показать, какое текстовое поле пуст при нажатии кнопки?

enter image description here

+0

Вниз голосов, так как у этого вопроса нет конкретного ответа. – BangOperator

+0

@AbhinandanPratap Нет серийного голосования. Ни один из ответов на самом деле не делает то, что задают. OP хочет оповещение, которое отображает список всех пустых полей. И кроме того (но не причина каких-либо отрицательных ответов на ответы), никто не должен публиковать ответ на такой плохой вопрос. Ответы на плохие вопросы просто поощряют более плохие вопросы. – rmaddy

+0

Я думаю, что если харшилу или другому нужно научиться объективному c или другому методу, они должны приложить свои усилия, чтобы найти простое решение вместо того, чтобы задавать этим детям такие вопросы. – vaibhav

ответ

1

Есть два способа:

1) Если у вас есть выходы каждого текстового поля, то вы можете проверить с помощью, если-иначе, как

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. Если вы получите Да, то идите дальше.

Update:

Если вы хотите, чтобы показать пустой список TextField на alertview, то вы можете сделать что-то подобное,

-(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]; 

} 
+0

Второй вариант хороший, я думаю .. – Shreyank

+0

@ Шрайанк: Да, второе намного лучше. – Lion

+0

Этот ответ не делает то, что просит ОП. – rmaddy

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 
} 
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) Если вам нужны конкретные имена, вы можете создать словарь, который отображает имена их TextFields. Затем вы перебираете словарь, ища соответствующее текстовое поле.

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. Также обратите внимание, что порядок, в котором текстовые поля будут найдены, не является детерминированным.

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() 
    } 
} 
-1

Позже я узнал, что сейчас нет способа сделать это.

+0

1) Это не ответ на ваш вопрос. 2) Это просто неправда. Это может быть сделано. – rmaddy

Смежные вопросы