0

오류가있는 경우 UITextField의 유효성을 검사하고 UIAlertView를 표시하려고합니다.UITextField 유효성 검사 및 UIAlertView 표시 오류

이전에 아래 코드를 사용했습니다. 2 개의 UITexfields와 완벽하게 작동하지만 많은 UITextfield에서는 불가능합니다.

내 UITexfields를 확인하기 위해 UIAlertView를 표시하는 방법에 대한 팁은 어떻게 작성합니까?

- (void)processFieldEntries { 
    NSString *usernameString = usernameField.text; 
    NSString *passwordString = passwordField.text; 
    NSString *firstNameString = firstNameField.text; 
    NSString *nameString = nameField.text; 
    NSString *cityString = cityField.text; 

    NSMutableArray *errors = [NSMutableArray array]; 

    if (usernameString.length == 0) { 
     [errors addObject:@"a username"]; 
    } 

    if (passwordString.length == 0) { 
     [errors addObject:@"a password"]; 
    } 

    if (firstNameString.length == 0) { 
     [errors addObject:@"a first name"]; 
    } 

    if (nameString.length == 0) { 
     [errors addObject:@"a name"]; 
    } 

    if (errors.count) { 
     NSString *message = [NSString stringWithFormat:@"Enter %@", [errors componentsJoinedByString:@", "]]; 

     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Errors" message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alertView show]; 
    } 
} 

이 진짜 잘 확장되지 않습니다 물론 :

- (void)processFieldEntries { 

    NSString *usernameString = usernameField.text; 
    NSString *passwordString = passwordField.text; 
    NSString *firstNameString = firstNameField.text; 
    NSString *nameString = nameField.text; 
    NSString *cityString = cityField.text; 

    NSString *errorText = @"Enter"; 
    NSString *usernameBlankText = @" a username"; 
    NSString *passwordBlankText = @" a password"; 
    NSString *prenomBlankText = @" a firstname"; 
    NSString *nomBlankText = @" a name"; 
    NSString *joinText = @", "; 

    BOOL textError = NO; 

    if (identifiantString.length == 0 || motDePasseString.length == 0 || prenomString.length == 0 || nomString.length == 0 || idPoubelle.length == 0) { 
     textError = YES; 

     if (usernameString.length == 0) { 
      errorText = [errorText stringByAppendingString:usernameBlankText]; 
     } 

     if (usernameString.length == 0 || passwordString.length == 0) { 
      if (usernameString.length == 0) { 
       errorText = [errorText stringByAppendingString:joinText]; 
      } 
      errorText = [errorText stringByAppendingString:passwordBlankText]; 
     } 
    } 

    if (textError) { 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:errorText message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil]; 
     [alertView show]; 
     return; 
    } 
} 
+0

왜 2 개 이상의 텍스트 필드의 유효성을 검사 할 수 없습니다? – rmaddy

+0

물론 가능하지만 모든 사례를 작성하려면 코드가 매우 길어질 수 있습니다. – Michel

답변

0

나는 같은 것을 할 것입니다. 텍스트 필드 및 오류 메시지의 배열을 만드는 것을 고려하십시오. 그런 다음 if 문의 긴 목록을 작성하는 대신 배열을 반복 할 수 있습니다.

0

예를 들어, 이름에 숫자 나 문자 이외의 다른 기호가 없어야하기 때문에 사용자가 정보를 입력 할 때 추가 검사를 수행 할 수도 있습니다.

당신이 할 수있는 좋은 방법은 View Controller 클래스에서 UITextFieldDelegate 프로토콜을 구현하는 것입니다.

그런 다음 각 UITextField 개체의 태그 속성을 설정하십시오. 때마다 임의의 텍스트 상자 당신의 시간 뭔가를 호출

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 

:

프로토콜이 유용한 방법이있다.

은 그럼 당신은 확인할 수 있습니다 : 코드 깨끗하고 더 읽기 쉽게됩니다 별도의 기능에

switch (textfield.tag) 
{ 
case TEXT_FIELD_FOR_FIRST_NAME_TAG: 
{ 
    if (!validateFirstNameFunction) { /* Display some error */ } 

    break; 
} 

case TEXT_FIELD_FOR_LAST_NAME_TAG: 
{ 
    if (!validateLastNameFunction) { /* Display some error */ } 

    break; 
} 

// And so on... 

} 

시도를.

는뿐만 아니라 당신에게 어떤 가치를 제공 희망 :)

관련 문제