2015-01-15 6 views
0

내가 내용은 다음과 함께 UIAlertView에서 얻을하려고 해요 위임 : 다음UIAlertView 못해

UIAlertView *loginView = [[UIAlertView alloc] initWithTitle:@"Login" 
                message:@"Please enter user and pass" 
                delegate:self 
              cancelButtonTitle:@"Abort" 
              otherButtonTitles:@"Login", nil]; 
[loginView setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput]; 
[loginView show]; 

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 1) 
    { 
     UITextField *username = [alertView textFieldAtIndex:0]; 
     NSLog(@"username: %@", username.text); 

     UITextField *password = [alertView textFieldAtIndex:1]; 
     NSLog(@"password: %@", password.text); 

    } 
} 

을 내 .H 파일에

@interface loginTest : UIViewController <UIAlertViewDelegate> 

것입니다 여기서 뭐라구?

+0

정확히 작동하지 않는 것은 무엇입니까? – Krumelur

+0

Im은 textField에서 값을 가져올 수 없습니다. – mucmun

+0

대리자 메서드가 실행됩니까? 올바른 버튼 (index == 1)을 누르십니까? – Krumelur

답변

2

나는 귀하의 질문에 문제를 일으키는 몇 가지 중요한 세부 사항이 누락되어 있다고 생각하므로 답변은 귀하가 마지막으로 한 의견을 추측하여 나온 것입니다. 모든 뷰 컨트롤러에 UIAlertView을 제공하는 경고보기 대리자를 구현해야합니다. 델 ViewController에 대리자를 구현하는 것처럼 들리지만 abc에는 나타나지 않습니다. 추가 설명을 위해 여기에 코드 설명이 있습니다.

ViewControllerAViewControllerB이 있다고 가정 해 보겠습니다. ViewControllerA.h에서 :

@interface ViewControllerA : UIViewController <UIAlertViewDelegate> 

그리고 ViewControllerB.h에서 :

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 1) 
    { 
     // do stuff 
    } 
} 

당신이 UIAlertView을 표시 할 때와에 위임을 설정 ViewControllerA.mViewControllerB.m 모두 그런

@interface ViewControllerB : UIViewController <UIAlertViewDelegate> 

, 당신은 구현해야 self, self은 현재 현재있는보기 컨트롤러를 나타냅니다. 귀하의보기 컨트롤러의 Ne는 대리자 메서드를 구현하고 다른보기 컨트롤러는 경고를 표시하고 경고를 다시 표시합니다 (위임자를 구현하지 않음). 따라서 작업이 완료되면 아무 것도하지 않습니다 . 이 질문에 대한 답변이되기를 바랍니다.

+0

감사합니다. 당신의 대답이 옳았고 저를 도왔습니다. – mucmun

+0

@mucmun 위대하고 도울 수있어서 다행 :) – Chris