2011-03-05 5 views
1

uialert보기에 이상한 문제가 있습니다.UIALERTVIEW objective c 문제

내가 몇 가지 경고가 내가 didDismissWithButtonIndex 위임 방법에 대해 다음 한 내하는 .m 파일에 내 .H 파일

UIAlertView *changepwalert; //change password alert. 
UIAlertView *delallalert; //delete selected transactions. 
UIAlertView *logout; //logout alert. 
UIAlertView *closingbalancealert; //closing balance alert. 
UIAlertView *totalreportalert; //total report alert. 
UIAlertView *ordercashalert; //order cash alert. 
UIAlertView *unlockingalert; //unlocking alert. 
UIAlertView *receivecashalert; 

의 멤버 변수가 있습니다. 여기

if(alertView==unlockingalert && buttonIndex==0) 
{ 
    //code 
} 

else if(alertView==ordercashalert && buttonIndex==0) 
{ 
    //code 

} 
else if(alertView==receivecashalert && buttonIndex==0) 
{ 
    //code 
} 
else if (alertView==logout && buttonIndex == 0) 
{ 
    //code 
} 
else if(alertView==closingbalancealert && buttonIndex==0) 
{ 
     //code 
} 
else if (alertView==changepwalert && buttonIndex==0) 
{ 
    //code 
} 
else if(alertView==delallalert && buttonIndex==0) 
{ 
    //code 
} 

내가는 대리자 메서드를 실행하는 로그 아웃 버튼을 클릭 할 때 내가 uialertview

ordercashalert = [[UIAlertView alloc] initWithTitle:nil message:@"Enter Password\n\n\n\n\n\n" delegate:self 
            cancelButtonTitle:@"Ok" otherButtonTitles:@"Cancel",nil]; 


logout = [[UIAlertView alloc] initWithTitle:@"Logout" message:@"Are You Sure?" delegate:self cancelButtonTitle:@"YES" otherButtonTitles:@"NO",nil]; 
[logout show]; 
[logout release]; 

를 초기화하고 방법의 샘플이지만 ordercashalert에 경고를 일치하거나 receivecashalert.i 확실하지 않다 왜. 실제로 로그 아웃 경고와 일치해야합니다. 나는 제품을 배달하는 마지막 단계에 있으며 갑자기이 버그가 있습니다. 어떤 사람이 제발 나를 도울 수 있어요.

+0

초기화 할 코드를 넣으십시오 ... –

+0

@mehta 내 게시물을 편집했는데, 사용자가 클릭 할 단추 인덱스를 알지 못하기 때문에 uialertview를 초기화하는 코드를 넣을 수 있다고 생각하지 않습니다. 더 이상 아이디어 ??? – Rajashekar

답변

5

태그 및 열거 트릭을 사용하는 것이 좋습니다. 그런 다음

enum { 
    RSChangePasswordAlertTag, 
    RSDeleteAlertTag, 
    .... 
    ReceiveCashAlertTag 
}; 

을 경고를 생성 할 때, 단지 alertView의 태그를 위해 위임 방법의 사용 그리고

UIAlertView *myAlert = [[[UIAlertView alloc] initWithTitle:....] autorelease]; 
[myAlert setTag:RSDeleteAlertTag]; 
[myAlert show]; 

switch 문을 적절한 태그를 할당합니다 : - 첫 번째 가능한 모든 경고에 대한 열거를 생성

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSUInteger)buttonIndex { 
    switch (alertView.tag) { 
     case RSPasswordAlertTag: { 
      // Do password alert thing 
      break; 
     } 
     case RSDeleteAlertTag: { 
      // do delete thing 
      break; 
     } 
     .... // here be other cases 
    } 
} 

이 방법을 사용하면 포인터 대신 정수 만 비교하면 코드가 더 적은 인스턴스 변수로 더 깨끗해집니다.

+0

친구에게 고마워, 내가 이것을 시도하고 내일 알려 드리겠습니다. – Rajashekar

+0

그 친구에게 감사드립니다. 친구가 일하고있는 것 같습니다. – Rajashekar