I am setting up the Micah class to support multiple orientation and ARC
DateTimePicker.h
@interface DateTimePicker : UIView { } @property (nonatomic, assign, readonly) UIDatePicker *picker; - (void) setMode: (UIDatePickerMode) mode; - (void) addTargetForDoneButton: (id) target action: (SEL) action; @end
DateTimePicker.m
Using a custom view in a view controller:
NSDate *selectedDate; UIButton *button; - (void)viewDidLoad { [super viewDidLoad]; selectedDate = [NSDate new]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"MM/dd/yyyy"; button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown]; [button setTitle:[dateFormatter stringFromDate:selectedDate] forState:UIControlStateNormal]; button.frame = CGRectMake(100, 50, 100, 40.0); [self.view addSubview:button]; CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenWidth = screenRect.size.width; CGFloat screenHeight = screenRect.size.height; picker = [[DateTimePicker alloc] initWithFrame:CGRectMake(0, screenHeight/2 - 35, screenWidth, screenHeight/2 + 35)]; [picker addTargetForDoneButton:self action:@selector(donePressed)]; [self.view addSubview:picker]; picker.hidden = YES; [picker setMode:UIDatePickerModeDate]; [picker addTarget:self action:@selector(pickerChanged) forControlEvents:UIControlEventValueChanged]; } -(void)pickerChanged { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"MM/dd/yyyy"; selectedDate = picker.date; [button setTitle:[dateFormatter stringFromDate:selectedDate] forState:UIControlStateNormal]; } -(void)donePressed { picker.hidden = YES; } -(void)buttonPressed:(id)sender { picker.hidden = NO; [picker setDate:selectedDate]; }
source share