본문 바로가기

프로그램/iPhone

UIDatepicker를 Popup 효과 내기




정의 :


- UIDatepicker를 UIActionSheet에 삽입하고 UIActionSheet를 호출한다. 다만 옆 사항만 했을 경우 상단 Cancel, Done 버튼이 생성 되지 않기 때문에 UIActionSheet 창을 닫을 수가 없다.

 

- UIActionSheet 특성상 UIButton을 AddSubView 해도 보이지가 않기 때문에 위 두버튼은 UIButton으로 생성해 넣는 것이 아니라 UIToolBar를 생성하고 그 위에 UIBarButtonItem으로 생성해서 넣는다.

 

- UIActionSheet는 두 버튼을 이용해서 닫아야 함으로 멤버변수로 UIDatepicker도 Done 클릭 시 저장해야 함으로 멤버변수로 정의한다.
UIActionSheet *action;
UIDatePicker *datePicker;

 

- Cancel, Done 버튼으로 UIActionSheet를 닫을 때는 다음과 같이 구현한다.
[action dismissWithClickedButtonIndex:0 animated:YES];

 

구현 :


1. Popup Datepicker 생성부


action = [[UIActionSheet alloc] initWithTitle:@""
    delegate:nil
    cancelButtonTitle:nil
    destructiveButtonTitle:nil
    otherButtonTitles:nil];
datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)];
datePicker.datePickerMode = UIDatePickerModeDate;
datePicker.maximumDate = [NSDate date];

UIToolbar *datePickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
datePickerToolbar.barStyle = UIBarStyleBlackOpaque;
[datePickerToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];

UIBarButtonItem *btnFlexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
    target:self action:nil];
[barItems addObject:btnFlexibleSpace];
[btnFlexibleSpace release];

UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
    target:self
    action:@selector(doDatePickerCancelClick:)];
[barItems addObject:btnCancel];
[btnCancel release];

UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
    target:self
    action:@selector(doDatePickerDoneClick:)];
[barItems addObject:btnDone];
[btnDone release];
[datePickerToolbar setItems:barItems animated:YES];
[barItems release];

[action addSubview:datePickerToolbar];
[action addSubview:datePicker];

[datePicker release];
[datePickerToolbar release];

2. Popup Datepicker 호출부


[action showInView:self.view];
[action setBounds:CGRectMake(0, 0, 320, 500)];




출처 : http://krazie99.blog.me/30094175499