요구 사항 중에 ActionSheet의 삭제 버튼을 빨간색 버튼으로 변경해 달라는 요청이 들어왔다.

처음에는 버튼의 스타일을 바꾸면 되겠지라는 생각으로 버튼 스타일을 바꾸었으나 영 이상한 모양으로 나왔다

(배경색을 바꾸니 정말 사각형으로 빨간색이 되어버렸다) 

그래서 헤더 값을 찾아본 결과 눈에 띄는 프로퍼티를 찾았다.

@property(nonatomic) NSInteger destructiveButtonIndex;        // sets destructive (red) button. -1 means none set. default is -1. ignored if only one button

 
설명 중에 red 버튼이라는 말만 보고 한번 인덱스 값을 입력해보았다.

actionSheet.destructiveButtonIndex = 0;   // 삭제 버튼은 0번 인덱스이다.

 
역시 생각대로 빨간 버튼이 출력되었다

그리고 추가로 버튼에 대한 스타일을 변경하는 소스도 올린다.

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet  // before animation and showing view

{    

    if(actionSheet.tag == /* 액션 시트를 구분하기 위한 태그 값*/ ){

         for (UIView* view in [actionSheet subviews]) {


            if ([view isKindOfClass:NSClassFromString(@"UIAlertButton")] == NO) { 

                continue;

            }    

            

            if ([view respondsToSelector:@selector(title)] == NO) {                

                continue;

            }  

            

            NSString * title = [view performSelector:@selector(title)];

            /// 원하는 버튼을 찾기 위하여 버튼의 텍스트 값을 비교하여 찾아낸다.            

            if ([title isEqualToString:@"?????"] && [view respondsToSelector:@selector(setEnabled:)])                

            {     
                // 버튼의 스타일을 지정한다. 

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

            }            

        }

    }*/

}


 

+ Recent posts