티스토리 뷰
관련성이 있는 특정 액션들을 수행하는 여러개의 버튼들을 중에서 하나를 선택하도록 할때 iOS에서 UIActionSheet를 사용합니다.
iOS7에서 디자인이 약간 변했지만 여러개의 버튼이 세로로 나열되어있고, 맨 아래에 취소버튼이 있는 형태입니다.
각각의 버튼은 맨 위에 있는 버튼부터 0번부터 시작되는 인덱스가 부여되어 delegate를 통해 사용자가 탭한 버튼이 어떤 버튼인지 알수 있어 그에 대한 처리를 할수 있습니다.
UIActionSheet가 생성된 후에 동적으로 여러개의 버튼을 추가하면 맨 아래에 이는 취소버튼의 인덱스번호가 재배열되지 않는 문제가 있습니다.
UIActionSheet를 생성할때 취소버튼을 포함해서 5개의 버튼을만들고,
후에 4개의 버튼을 추가한 경우 취소버튼의 인덱스는 4가 아닌 8이 되어야 하는데
계속해서 delegate에서는 취소버튼을 누르면 index를 4를 리턴합니다.
이러한 오류가 있어 UIActionSheet를 생성할때 cancelButton을 nil로 하고,
모든 버튼들이 추가완료되었을때 동적으로 맨마지막에 취소버튼을 추가하는 식으로 구현하면 됩니다.
- (void)viewDidLoad
{
// cancel button을 nil로 하여 action sheet를 생성
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"타이틀" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"버튼1", @"버튼2", @"버튼3", @"버튼4", nil];
// 동적으로 버튼을 추가
[actionSheet addButtonWithTitle:@"버튼5"];
[actionSheet addButtonWithTitle:@"버튼6"];
[actionSheet addButtonWithTitle:@"버튼7"];
[actionSheet addButtonWithTitle:@"버튼8"];
//동적으로 버튼 추가가 완료되면 취소버튼을 추가하고 cancel button index에 등록
actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"cancel"];
[actionSheet showFromToolbar:self.navigationController.toolbar];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"select button index : %d", buttonIndex);
// 취소버튼 확인
if (actionSheet.cancelButtonIndex == buttonIndex) {
NSLog(@"actionsheet cancel");
return;
}
}
'WEB2.0 > 프로그래밍' 카테고리의 다른 글
php로 redis 이용하기 (0) | 2014.02.28 |
---|---|
그 유명한 redis(레디스)를 설치해볼까 (0) | 2014.02.11 |
iOS 에서 pull to refresh 당겨서 새로고침 기능 적용하기 (0) | 2014.01.21 |
짧고 간단한 memcached 설명 (0) | 2014.01.15 |
iOS UIImage를 디바이스의 사진 앨범에 저장하기 (0) | 2014.01.07 |
- Total
- Today
- Yesterday
- 어플리케이션
- 앱스토어
- JavaScript
- 창업
- 대학생
- 스마트폰
- iPhone
- 소프트웨어
- 자바스크립트
- 모바일
- AWS
- 네이버
- 구글
- 앱
- android
- Apple
- 벤처
- 트위터
- 경진대회
- 애플
- 웹표준
- 아이폰
- 아이디어
- 공모전
- 게임
- php
- CSS
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |