iOS 에서 UIAlertView 경고 상자 구성 요소 사용 튜 토리 얼

7500 단어 iOSUIAlertView
1.가장 간단 한 용법
초기 화 방법:

- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id /*<UIAlertViewDelegate>*/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...;
이 방법 은 제목,내용,에이전트 와 일부 단추 의 제목 을 설정 하여 경고 상 자 를 만 듭 니 다.코드 예 시 는 다음 과 같 습 니 다.
    UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@"나의 경고 상자"message:@"이것 은 경고 상자 입 니 다"delegate:self cancelButtonTitle:@"취소"otherButtonTitles:@"확인",nil];
    [alert show];
효 과 는 다음 과 같 습 니 다:
201652391914528.png (306×323)
메모:단추 수가 두 개 를 넘 으 면 다음 과 같이 생 성 됩 니 다.
201652391939587.png (296×395)
화면 표시 범 위 를 초과 하면 table View 와 같은 효 과 를 만 듭 니 다.
2.UIAlertView 에 여러 개의 버튼 추가

UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@" "

                                                  message:@" :"

                                                  delegate:nil  

                                                  cancelButtonTitle:@" "

                                                  otherButtonTitles:@" ", @" ", @" ",nil]; 

[alert show]; 

[alert release];

3.사용자 가 클릭 한 단 추 를 어떻게 판단 합 니까?
UIAlertView 에 UIAlertView Delegate 의뢰 가 있 습 니 다.이 의뢰 를 계승 하여 클릭 이 벤트 를 실현 합 니 다.
 헤더 파일:

@interface MyAlertViewViewController : UIViewController {

}

(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
-(IBAction) buttonPressed;

@end

원본 파일:

-(IBAction) buttonPressed

{

UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@" "

                                                 message:@" :"

                                                 delegate:self  

                                                 cancelButtonTitle:@" "

                                                 otherButtonTitles:@" ", @" ", @" ",nil]; 

[alert show]; 

[alert release];

}

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

NSString* msg = [[NSString alloc] initWithFormat:@" %d !",buttonIndex];

UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@" "

                                                 message:msg

                                                 delegate:nil

                                                 cancelButtonTitle:@" "

                                                 otherButtonTitles:nil];

[alert show];

[alert release];

[msg release];

}

"취소","버튼 1","버튼 2","버튼 3"의 색인 buttonIndex 는 각각 0,1,2,3 입 니 다.
4.수 동 취소 대화 상자

[alertdismissWithClickedButtonIndex:0 animated:YES];
5.UIAlertView 에 하위 보기 추가
UIAlertView 대상 에 하위 보 기 를 너무 추가 하 는 과정 에서 주의해 야 할 부분 이 있 습 니 다.단 추 를 삭제 하면 UIAlerView 보기 의 모든 단 추 를 취소 할 때 전체 디 스 플레이 구조 불 균형 을 초래 할 수 있 습 니 다.버튼 이 사용 하 는 공간 은 사라 지지 않 습 니 다.우 리 는 이 버튼 들 이 진정 으로 삭제 되 지 않 았 고 단지 그 가 보이 지 않 았 을 뿐 이 라 고 이해 할 수 있 습 니 다.UIAlertview 대상 에 텍스트 만 표시 할 경우 메시지 의 시작 부분 에 줄 바 꿈 문자(@")를 추가 하면 단추 아래쪽 과 상단 의 공간 을 균형 있 게 할 수 있 습 니 다.
다음 코드 는 UIAlertview 대상 에 하위 보 기 를 추가 하 는 방법 을 보 여 줍 니 다.

UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@" "

                                                 message:nil

                                                 delegate:nil  

                                                 cancelButtonTitle:nil

                                                 otherButtonTitles:nil]; 

[alert show];

UIActivityIndicatorView*activeView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

activeView.center = CGPointMake(alert.bounds.size.width/2.0f, alert.bounds.size.height-40.0f); 

[activeView startAnimating]; 

[alert addSubview:activeView]; 

[activeView release]; 

[alert release]; 

6.기타 
UIAlertView 는 기본적으로 모든 text 를 가운데 로 정렬 합 니 다.입력 상자 와 같은 텍스트 를 왼쪽으로 정렬 하거나 다른 컨트롤 을 추가 하려 면 어떻게 해 야 합 니까?걱정 하지 마 세 요.아이 폰 SDK 는 유연 합 니 다.호출 프로그램 에서 사용 할 수 있 는 delegate 메시지 가 많 습 니 다.할 일 은

(void)willPresentAlertView:(UIAlertView *)alertView
에서 자신의 필요 에 따라 수정 하거나 추가 하면 됩 니 다.예 를 들 어 메시지 텍스트 를 왼쪽 으로 정렬 해 야 합 니 다.아래 의 코드 는 다음 과 같 습 니 다.

-(void) willPresentAlertView:(UIAlertView *)alertView

{

      for( UIView * view in alertView.subviews )

      {

            if( [view isKindOfClass:[UILabel class]] )

            {

                  UILabel* label = (UILabel*) view;

                  label.textAlignment=UITextAlignmentLeft;

            }

      }

}

 이 코드 는 간단 합 니 다.메시지 상자 가 팝 업 될 때 모든 메시지 상자 대상 을 옮 겨 다 니 며 텍스트 정렬 속성 을 UITextAlignment Left 로 변경 하면 됩 니 다.
다른 위 젯 을 추가 하 는 것 도 마찬가지 입 니 다.다음 코드 에 UITextField 두 개 를 추가 합 니 다.

-(void) willPresentAlertView:(UIAlertView *)alertView

{

      CGRect frame = alertView.frame;

      frame.origin.y -= 120;

      frame.size.height += 80;

      alertView.frame = frame;

      for( UIView * viewin alertView.subviews )

      {

            if( ![viewisKindOfClass:[UILabelclass]] )

            {

                  CGRect btnFrame = view.frame;

                  btnFrame.origin.y += 70;

                  view.frame = btnFrame;

            }

}

UITextField* accoutName = [[UITextFieldalloc] init];

UITextField* accoutPassword = [[UITextFieldalloc] init];

accoutName.frame = CGRectMake( 10, frame.origin.y + 40,frame.size.width - 20, 30 );

accoutPassword.frame = CGRectMake( 10, frame.origin.y + 80,frame.size.width -20, 30 );

accoutName.placeholder = @" ";

accoutPassword.placeholder = @" ";

accoutPassword.secureTextEntry = YES;

[alertView addSubview:accoutPassword];

[alertView addSubview:accoutName];

[accoutName release];

[accoutPassword release];

}

메시지 상자 의 고유 한 button 과 label 을 이동 시 키 지 않 으 면 추 가 된 text field 가 가 려 집 니 다.그리고 필요 한 위 젯 을 해당 위치 에 추가 하면 됩 니 다.
UIAction Sheet 에 대해 서도 마찬가지 입 니 다.

(void)willPresentActionSheet:(UIActionSheet *)actionSheet
똑 같은 처 리 를 하면 자신 이 원 하 는 화면 을 얻 을 수 있다.

좋은 웹페이지 즐겨찾기