iOS2012. 9. 18. 00:37

//경고창 1.

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"A" message:@"" delegate:self cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[alert show];

[alert release];


//경고창 2

UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"B" message:@"" delegate:self 

cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[alert show];

[alert release];


//경고창 3

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"C" message:@"" delegate:self 

cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[alert show];

[alert release];



//경고창의 버튼 이벤트를 감지하는 델리게이트.

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

{

//경고창의 타이틀을 비교해서 경고창을 구별한다.

if ( [[alertView titleisEqualToString:@"A"])

{

        if(buttonIndex==0){

}else {

}

    

}

else if ( [[alertView titleisEqualToString:@"B"]) 

{

if(buttonIndex==0){

}

}

else if ( [[alertView titleisEqualToString:@"C"]) 

{

if(buttonIndex==0){

}

}

}

Posted by 다오나무
iOS2012. 6. 20. 13:37

UIAlertView *alert = [[UIAlertView allocinitWithTitle:@"원하는 정보를 선택\n" 

  message:@"" // 제목

  delegate:self

  cancelButtonTitle:@"Cancel" // 취소버튼

          otherButtonTitles:@"아황산가스(SO2)"@"이산화질소(NO2)"@"일산화탄소(CO)"@"오존(O3)"@"미세먼지(PM10)",nil];


[alert show];

[alert release];


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

{

    if (buttonIndex == 0// "아황산가스?버튼

    {

// 처리 내용

NSLog(@"gogogo");

}

}

Posted by 다오나무
iOS2012. 6. 20. 13:26

흔히 경고창으로 사용되는 UIAlertView는 자주는 안 쓰이지만, 사용할 때를 대비해서 커스텀해보도록 하겠습니다.



먼저, UIAlertView 사용법부터 보겠습니다.

UIAlertView *nomalAlert = [[UIAlertView alloc]initWithTitle:@"공지사항" message:@"기본 경고창입니다."delegate:self cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[nomalAlert show];


initWithTitle : (문자열) 타이틀이 들어갑니다

message : (문자열) 안에 들어가는 내용을 쓰시면 됩니다.

delegate : 기본적으로 self로 연결해줍니다. ( Textfield 등 다른 delegate도 연결가능합니다. )

cancelButtonTitle : 눌렀을 때, 자동으로 AlertView가 없어집니다. 보통 "확인" 버튼으로 사용됩니다.

otherButtonTitles : "확인"버튼 이외의 버튼을 추가적으로 넣을 수 있습니다.

아, 그리고 반드시 show함수를 호출해야 화면에 표시됩니다.


+@ 각 버튼에 대한 이벤트는 <UIAlterDelegate>를 통해 
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 를 통해 제어할 수 있습니다.

ex) if( buttonIndex == 0) // 첫번째 버튼 이벤트
       else if( buttonIndex == 1) // 두번째 버튼 이벤트

[결과화면]


자 그럼 UIAlterView를 커스텀하기 위해서 xCode에서 Command+n으로 소스를 하나 만듭시다.
이름은 원하시는 대로, 전 customAlert라고 만들었습니다.

기본적으로 NSObject Class를 상속받고 있지만 이걸 UIAlertView로 바꾸어 줍시다.

// UIAlertView 상속

@interface CustomAlertView : UIAlertView


UIAlertView를 하나의 모양으로 정해놓는 방법
- 첫번째 방법의 경우 실질적으로 화면에 표시되는 UIAlertView의 show함수만 재정의 하는 방법으로 가능하며

// Custom하는데 필요한 함수들 Overriding
-(void)show
{

    [super show];

    for (UIView* view in self.subviews) {

        if ([view isKindOfClass:[UIImageView class]]) {  // SubView UIImageView이면 -> 바탕

            UIImage *bg = [UIImage imageNamed:@"bg.png"];

            ((UIImageView*)view).image = [bgresizableImageWithCapInsets:UIEdgeInsetsMake(50,10,10,10)];

        }

        else if ([view isKindOfClass:[UIButton class]]) { // Button type 이면 

            [(UIButton*)view setBackgroundImage:[UIImage imageNamed:@"buttonBG.png"]forState:UIControlStateNormal];

        }

        else if ([view isKindOfClass:[UILabel class]]) {  // UILabel이면.

            l.shadowColor = [UIColor blackColor];

        }

    }


}


이 경우에는 우리가 만든 customAlert를 통해 선언 후에 기본 AlertView와 똑같이 사용해도 바뀜.


-- 결과 --

CustomAlertView *alert = [[CustomAlertView alloc]initWithTitle:@"공지사항" message:@"\n커스텀 경고창입니다." delegate:self cancelButtonTitle:@"확인" otherButtonTitles:@"취소"nil];

[alert show];





[참고]

배경으로 쓰인 이미지 입니다.


버튼 배경으로 쓰인 이미지 입니다.

Posted by 다오나무
영삼이의 IT정보2012. 6. 20. 13:17

iOS 5부터 UIAlertView에 alertViewStyle 프라퍼티가 추가되었다. 기존에 약간의 커스텀 작업을 통해 텍스트필드를 추가할 수 있었는데 이제는 간단히 상수를 이용하여 원하는 작업을 좀더 간단히 할 수 있게 되었다. 자 간단히 살펴보자.

1. 기본 스타일

UIAlertView *alertView = [[UIAlertView allocinitWithTitle:@"기본 스타일"

                                                    message:@"기본 스타일의 얼럿 입니다."

                                                   delegate:self

                                          cancelButtonTitle:@"취소"

                                          otherButtonTitles:@"확인"nil];

[alertView show]

 

 
2. 텍스트 입력 스타일

UIAlertView *alertView = [[UIAlertView allocinitWithTitle:@"텍스트 입력 스타일"

                                                    message:@"텍스트 입력 스타일의 얼럿 입니다."

                                                   delegate:self

                                          cancelButtonTitle:@"취소"

                                          otherButtonTitles:@"확인"nil];

alertView.alertViewStyle = UIAlertViewStylePlainTextInput;

[alertView show];


이 경우 텍스트 필드에 입력된 데이터의 접근은 다음과 같이 한다.

UITextField *textField = [alertView textFieldAtIndex:0];

NSLog(@"Plain text input: %@",textField.text);


 3. 압호 입력 스타일

UIAlertView *alertView = [[UIAlertView allocinitWithTitle:@"암호 입력 스타일"

                                                    message:@"암호 입력 스타일의 얼럿 입니다."

                                                   delegate:self

                                          cancelButtonTitle:@"취소"

                                          otherButtonTitles:@"확인"nil];

alertView.alertViewStyle = UIAlertViewStyleSecureTextInput;

[alertView show];


 
4. 로그인(ID)과 비밀번호 입력 스타일

UIAlertView *alertView = [[UIAlertView allocinitWithTitle:@"로그인과 비밀번호 입력 스타일"

                                                    message:@"로그인과 비밀번호를 입력하세요."

                                                   delegate:self

                                          cancelButtonTitle:@"취소"

                                          otherButtonTitles:@"확인"nil];

alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;

[alertView show];


이 경우 텍스트 필드에 입력된 데이터의 접근은 다음과 같이 한다.

UITextField *loginField = [alertView textFieldAtIndex:0];

NSLog(@"Login input: %@",loginField.text);

    

UITextField *passwordField = [alertView textFieldAtIndex:1];

NSLog(@"Password input: %@",passwordField.text);

 


또한, UIAlertViewDelegate에도 alertViewShouldEnableFirstOtherButton: 메서드가 추가 되었다. 이 메서드를 이용하여 다음과 같이 버튼을 동적으로 enabling/desabling 시킬 수 있다.

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView

{

    UITextField *textField = [alertView textFieldAtIndex:0];

    if ([textField.text length] == 0)

    {

        return NO;

    }

    

    return YES;

}


 



Posted by 다오나무