2013-05-16 2 views
0

Ниже приведен сценарий.Как снова вызвать вызов UIAlertView?

  1. Я создал UIAlertView в viewDidLoad контроллера, в котором я отображаю предупреждение.

    loginAlert = [[UIAlertView alloc] initWithTitle:@"Check" 
                  message:@"Ok" 
                  delegate:nil 
                cancelButtonTitle:@"Ok" 
                otherButtonTitles:nil, nil]; 
    [loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput]; 
    
  2. Я называю это [оповещение] и отображается.

  3. Когда пользователь нажимает Ok, он переходит к методу делегата textEndEditing и, если введено значение nil/worng, я снова вызываю [alert show].

    - (void)textFieldDidEndEditing:(UITextField *)textField 
    { 
    if ([textField.text length] > 0) 
    { 
    
    } 
    else 
    { 
    NSLog(@"Checking"); 
    [loginAlert show]; 
    } 
    } 
    

Но его не отображается снова. Скажите, пожалуйста, что делать?

+1

введите код. не можете понять, что у вас есть до – Durgaprasad

+0

, у вас есть свой класс класса объектов UIAlertView? –

+0

и негатив для непонимания !!!! – wolverine

ответ

1

Сначала измените свой делегат с представлением предупреждения на себя.

loginAlert = [[UIAlertView alloc] initWithTitle:@"Check" 
             message:@"Ok" 
             delegate:self 
           cancelButtonTitle:@"Ok" 
           otherButtonTitles:nil, nil]; 
[loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput]; 

[loginAlert show]; 

Затем в методе делегата просмотра предупреждения проверяем длину текста и снова показываем предупреждение, если оно пустое.

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{ 
    if (buttonIndex == 0) { 
     if ([[loginAlert textFieldAtIndex:0].text length] > 0) 
     { 

     } 
     else 
     { 
      NSLog(@"Checking"); 
      [loginAlert show]; 
     } 
    } 
} 
+0

Это прекрасно работает для моих требований. Наверное, я немного переусердствовал и оказался в методе делегата textfield и все. – wolverine

0

Попробуйте это:

loginAlert = [[UIAlertView alloc] initWithTitle:@"Check" 
             message:@"Ok" 
             delegate:self 
           cancelButtonTitle:@"Ok" 
           otherButtonTitles:nil, nil]; 
[loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput]; 


- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{ 
    if (buttonIndex == 0) { 
     [yourTextField resignFirstResponder]; 
    } 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    if (textField==yourTextField) { 
     if ([yourTextField.text isEqualToString:@""] || yourTextField.text == nil) { 
      [yourAlert show]; 
     } 
    } 
} 

Также см это для вашей проблемы:

  1. Keep UIAlertView displayed
  2. uialertview called more than once
+0

спасибо за быстрый ответ. хорошо, попробуйте это. – wolverine

0

Комплект делегата self вместо nil и реализовать мой код.

loginAlert = [[UIAlertView alloc] initWithTitle:@"Check" 
               message:@"Ok" 
               delegate:self 
             cancelButtonTitle:@"Ok" 
             otherButtonTitles:nil, nil]; 
    [loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput]; 



- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
    { 
     if(buttonIndex == 0) 
     { 
      [self.view endEditing:YES]; 
     } 
    } 
+0

@hitesh, что вы имеете в виду? –

+0

- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex; – hitesh

+0

еще раз позвоните [alert show] – hitesh

3

Вместо delegate:nil, положить delegate:self

loginAlert = [[UIAlertView alloc] initWithTitle:@"Check" 
              message:@"Ok" 
              delegate:self 
            cancelButtonTitle:@"Ok" 
            otherButtonTitles:nil, nil]; 
[loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput]; 
0

Как насчет сделать это просто ..?

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
if ([textField.text length] > 0) 
{ 

} 
else 
{ 
NSLog(@"Checking"); 
loginAlert = [[UIAlertView alloc] initWithTitle:@"Check" 
              message:@"Ok" 
              delegate:self 
            cancelButtonTitle:@"Ok" 
            otherButtonTitles:nil, nil]; 
[loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput]; 
[loginAlert show]; 
} 
} 
0
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{ 
    if (buttonIndex == 0) 
    { 
     // Your code write in this method and show your alert 
    } 
    else 
    { 
     [loginalert show]; 
    } 
}   

я надеюсь, что этот код полезным для вас.

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