2016-05-24 16 views
-3

Ich habe viele Textfelder, und auf Absenden klicken Sie auf Ich möchte eine Warnmeldung mit den Namen der leeren Textfelder anzeigen, eine bequeme Möglichkeit, dies ohne lange Zeilen zu tun, wenn Bedingungen?Wie zeigt man auf Knopfdruck, welches Textfeld leer ist?

enter image description here

+0

Down abstimmen, da diese Frage keine spezifische Antwort hat. – BangOperator

+0

@AbhinandanPratap Es gibt kein serial down voting. Keine der Antworten macht tatsächlich, was gefragt wird. Das OP möchte eine Warnung, die eine Liste aller Felder anzeigt, die leer sind. Und außerdem sollte niemand eine Antwort auf solch eine schlechte Frage veröffentlichen (aber nicht die Ursache für irgendwelche Downvotes bei den Antworten). Antworten auf schlechte Fragen fördern nur noch mehr schlechte Fragen. – rmaddy

+0

ich denke, wenn harshil oder andere objektive c oder andere tech lernen müssen, müssen sie ihre eigenen Bemühungen zu finden, einfache Lösung anstatt diese Baby wie Fragen hier .. – vaibhav

Antwort

1

Es gibt zwei Möglichkeiten:

1) Wenn Sie Ausgänge jedes Textfeld haben, dann können Sie prüfen, mit if-else wie

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

2) Sie alle Subviews bekommen in Array durch Aufruf der Methode subviews. So können Sie eine Methode mit Rückgabetyp BOOL etwas machen wie,

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

Dann können Sie diese Methode aufrufen, auf die Schaltfläche klicken Sie auf Absenden. Wenn ein Textfeld leer ist, wird NO else YES zurückgegeben. Wenn Sie Ja bekommen, dann gehen Sie weiter.

Update:

Wenn Sie leere Textfield-Liste auf Alertview zeigen wollen, dann können Sie etwas tun, wie,

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

Zweite Option ist gut, denke ich .. – Shreyank

+0

@Shreyank: Yeah, Second ist viel besser. – Lion

+0

Diese Antwort macht nicht, was das OP verlangt. – rmaddy

0

Kann es nicht so einfach sein, wie unten?

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

Es gibt zwei Möglichkeiten, die Sie ergreifen können, je nachdem, wie Sie den Namen nennen.

1) Wenn der in Ihrem Screenshot angezeigte Platzhaltertext der Name ist oder nahe genug an dem gewünschten Namen ist, können Sie diesen einfach verwenden. Iterieren Sie über die Textfelder, bis Sie ein leeres Feld gefunden haben, und zeigen Sie anhand des Platzhaltertexts eine Warnung an.

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

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

2) Wenn Sie bestimmte Namen benötigen, können Sie ein Wörterbuch erstellen, die die Namen ihrer Textfelder abbildet. Sie durchlaufen dann das Wörterbuch und suchen nach dem entsprechenden Textfeld.

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; 
    } 
} 

Beachten Sie, dass das Wörterbuch nicht UITextField als Schlüssel verwenden kann, weil diese Klasse nicht zu NSCopying nicht entspricht. Beachten Sie auch, dass die Reihenfolge, in der Textfelder gefunden werden, nicht deterministisch ist.

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

Ich fand später heraus, dass es keine Möglichkeit gibt, dies jetzt zu tun.

+0

1) Dies ist keine Antwort auf Ihre Frage. 2) Es ist einfach nicht wahr. Es kann getan werden. – rmaddy

Verwandte Themen