2014-09-19 6 views
0

Я новичок в IOS. Когда я щелкая на следующей Кнопка входа:Выполнение всплывающего окна с другого всплывающего окна в ios

enter image description here

Я использую этот код для создания всплывающих окон:

- (UIView *)createLoginView 
{ 
    UIView *alertView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 130)]; 

    UITextField *email = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 280, 50)]; 
    email.tag=420; 
    email.layer.cornerRadius = 5; 
    [email setTag:99]; 
    [email setTextAlignment:NSTextAlignmentCenter]; 
    [email setKeyboardType:UIKeyboardTypeEmailAddress]; 
    [email setPlaceholder:@"Email"]; 
    [email setBackgroundColor:[UIColor colorWithRed:243/255.0 green:243/255.0 blue:243/255.0 alpha:1.0]]; 
    [email setReturnKeyType:UIReturnKeyNext]; 
    [email setAutocorrectionType:UITextAutocorrectionTypeNo]; 

    UITextField *pass = [[UITextField alloc] initWithFrame:CGRectMake(10, 70, 280, 50)]; 
    pass.layer.cornerRadius = 5; 
    [pass setTag:100]; 
    [pass setTextAlignment:NSTextAlignmentCenter]; 
    [pass setSecureTextEntry:YES]; 
    [pass setPlaceholder:@"Password"]; 
    [pass setBackgroundColor:[UIColor colorWithRed:243/255.0 green:243/255.0 blue:243/255.0 alpha:1.0]]; 
    [pass setReturnKeyType:UIReturnKeyGo]; 

    [alertView addSubview:email]; 
    [alertView addSubview:pass]; 
    return alertView; 
} 

enter image description here

Войти Всплывающее работоспособной, но когда я нажимаю «Забыть?» кнопка всплывающего окна, всплывающее окно с забытым паролем не отображается. Вот код для всплывания всплывающего пароля.

- (UIView *)createForgotPasswordView 
{ 
    UIView *alertView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 130)]; 

    UITextField *email = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 280, 50)]; 

    email.layer.cornerRadius = 5; 
    [email setTag:22]; 
    [email setTextAlignment:NSTextAlignmentCenter]; 
    [email setKeyboardType:UIKeyboardTypeEmailAddress]; 
    [email setPlaceholder:@"Email"]; 
    [email setBackgroundColor:[UIColor colorWithRed:243/255.0 green:243/255.0 blue:243/255.0 alpha:1.0]]; 
    [email setReturnKeyType:UIReturnKeyNext]; 
    [email setAutocorrectionType:UITextAutocorrectionTypeNo]; 

    [alertView addSubview:email]; 
    return alertView; 
} 

И я использую его как:

- (IBAction)LogInClick:(UIButton *)sender { 
    IOS7AlertView *applyMsg = [[IOS7AlertView alloc] init]; 
    [applyMsg setContainerView:[self createLoginView]]; 

    [applyMsg setButtonTitles:[NSMutableArray arrayWithObjects:@"Forgot?", @"Login", nil]]; 


    [applyMsg setOnButtonTouchUpInside:^(IOS7AlertView *alertView, int buttonIndex) { 

     if(buttonIndex==0) 
     { 

      [alertView close]; 

      NSLog(@"Forgot Section"); 

      IOS7AlertView *applyPop = [[IOS7AlertView alloc] init]; 
      [applyPop setParentView:[self createForgotPasswordView]]; 


      [applyPop setButtonTitles:[NSMutableArray arrayWithObjects:@"Next", @"Cancel", nil]]; 

     } 
}]; 

Но проблема заключается в следующем всплывающее окно не появляется? В чем проблема? Пожалуйста помоги.

+3

Пожалуйста, обратите внимание, что с прошивкой 7 вы больше не должны добавлять подвиды в 'UIAlertView'. Из документации: класс 'UIAlertView' предназначен для использования как есть и не поддерживает подклассы. Иерархия представления для этого класса является частной и ее нельзя изменять. – rckoenes

+1

@rckoenes Я должен сказать, где находится 'UIAlertView', я бы больше интересовался кодом, стоящим за« IOS7AlertView », если они подклассифицируют' UIAlertView'. На самом деле я не вижу цели этого кода, так как они не делают ничего, что 'UIAlertView' уже делает для них. – Popeye

+0

@ Попай, вы совершенно правы, вам не нужно добавлять 'UITextField' самостоятельно. В моем комментарии больше указана часть документации, в которой указано, что иерархия представления является частной. Таким образом, вставка вашего собственного представления может испортить ситуацию. – rckoenes

ответ

2

уже UIalertview Иерархия имеет параметры электронной почты и пароля.

попробовать это, и это является родным

- (IBAction)LogInClick:(UIButton *)sender { 
UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:@"Login" 
         message:nil 
         delegate:self 
         cancelButtonTitle:@"Signup" 
         otherButtonTitles:@"Login",@"Forgot password", nil]; 

alert.alertViewStyle=UIAlertViewStyleLoginAndPasswordInput; 

[[alert textFieldAtIndex:0]setKeyboardType:UIKeyboardTypeEmailAddress]; 
[[alert textFieldAtIndex:0]setPlaceholder:@"Email address"]; 
[[alert textFieldAtIndex:1]setPlaceholder:@"Password"]; 
alert.tag=10; 
[alert show]; 
} 

и метод alert view delegate является

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 

    if (alertView.tag==65) 
    { 
    UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:@"Login" 
         message:nil 
         delegate:self 
         cancelButtonTitle:@"Signup" 
         otherButtonTitles:@"Login",@"Forgot password", nil]; 

alert.alertViewStyle=UIAlertViewStyleLoginAndPasswordInput; 

[[alert textFieldAtIndex:0]setKeyboardType:UIKeyboardTypeEmailAddress]; 
[[alert textFieldAtIndex:0]setPlaceholder:@"Email address"]; 
[[alert textFieldAtIndex:1]setPlaceholder:@"Password"]; 
alert.tag=10; 
[alert show]; 
} 


if (alertView.tag==10) 
{ 
    if (buttonIndex == 0) { 

     NSLog(@"signup"); 
     //Navigate to Signup page 



    } 
    else if (buttonIndex == 2) { 
     NSLog(@"Forgot password"); 

     // //Navigate to Forgot password page 
    } 
    else if (buttonIndex == 1) { 

     NSLog(@"YES"); 

     NSString *usernameInput=[alertView textFieldAtIndex:0].text; 

     NSString *passwordInput=[alertView textFieldAtIndex:1].text; 

     //pass the email id , password 

     NSLog(@"1 %@", usernameInput); 
     NSLog(@"2 %@", passwordInput); 

     NSString *emailReg = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailReg]; 


     // COMMENT: check if input information is valid or not 
     if([usernameInput isEqualToString:@""]) 
     { 
      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Alert!!!" message:@"You must fill in Email address" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      alert.tag=65; 
      [alert show]; 


     } 
     else if([emailTest evaluateWithObject:usernameInput] == NO) 
     { 

      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert!!" message:@"Please Enter Valid Email Address." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      alert.tag=65; 
      [alert show]; 

     } 
     else if([passwordInput isEqualToString:@""]) 
     { 
      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Alert!!!" message:@"You must fill in Password" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      alert.tag=65; 
      [alert show]; 


     } 
     else 
     { 
      //pass teh data to server or login process 
      } 

    } 
     } 
+0

это простой способ и не забудьте назначить в ваш файл заголовка –

+0

@ Anbu.Kartik: На самом деле мое всплывающее окно входа в систему работает, но всплывающее окно «забыть пароль» появляется после нажатия «foget»? кнопка всплывающего окна входа не наступает. – Poles

+0

oh if u r нажмите кнопку забыть, всплывающее окно не отображается, исправьте –