DirTy™의 하루일과/DirTy™의 가당찮은iOS

[IOS] UIAlertController에서 액션시트 사용하기

DirTy™ 2015. 1. 21. 15:45

IOS8에서 액션시트를 처음 사용해보게 되어서...

IOS8에서 새롭게 등장한 UIAlertController를 사용해서 구현하였다. 


사용법은 정말 간단하다.


// UIAlertController를 액션시트 형태로 생성

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil 

message:nil 

preferredStyle:UIAlertControllerStyleActionSheet];


// 액션1 설정

UIAlertAction *cancelAction = [UIAlertAction

actionWithTitle:NSLocalizedString(@"취소", @"Cancel Action")

style:UIAlertActionStyleCancel

handler:^(UIAlertAction *action) {

// 취소버튼 클릭시 하고싶은거 coding

}];


// 액션2 설정    

UIAlertAction *logoutAction = [UIAlertAction

actionWithTitle:NSLocalizedString(@"로그아웃", @"로그아웃 Action")

style:UIAlertActionStyleDestructive

handler:^(UIAlertAction *action) {

// 로그아웃 클릭시 하고싶은거 coding

}];


// 액션1,2 추가    

[alertController addAction:logoutAction];

[alertController addAction:cancelAction];    


// UIAlertController를 화면에 띄워준다.

[self presentViewController:alertController animated:YES completion:nil];


이것만으로 IOS8에서 간단하게 액션시트가 동작한다.


IOS7이하로는 UIAlertController를 사용할 수 없음으로 아래와같이 이전 방식으로 해야한다.


UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil

                                                    delegate:self

                                                    cancelButtonTitle:@"취소"

                                                   destructiveButtonTitle:@"로그아웃"

                                                   otherButtonTitles:nil, nil];

        

[actionSheet showInView:self.view];


액션시트 delegate의 아래 메서드를 통해서 클릭한 값이 들어온다.

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {