I had to create a date picker with a done button. I am sharing that experience with this post.
These are the steps I used.
This is the code for the implementation
DatePicker.h file
DatePicker.m file
- Create a UIView and add UIDatePicker to it
- Add a done buttton
- Add ability to assign a selector to done button. So we can respond to the click event
This is the code for the implementation
DatePicker.h file
// // DatePicker.h #import@interface DatePicker : UIView @property (nonatomic, assign, readonly) UIDatePicker *datePicker; @property (nonatomic, readwrite) float pickerHeight; - (void) setDatePickerMode: (UIDatePickerMode) mode; - (void) addTargetAndSelectorForDoneButton: (id) target action: (SEL) action; - (id) initWithFrame: (CGRect) frame withHeight:(float)height; @end
DatePicker.m file
#import "DatePicker.h"
@interface DatePicker ()
@property (nonatomic, readwrite) UIDatePicker *datePicker;
@property (nonatomic, assign) id doneTarget;
@property (nonatomic, assign) SEL doneHandler;
@end
@implementation DatePicker
@synthesize datePicker = _datePicker;
@synthesize pickerHeight = _pickerHeight;
@synthesize doneTarget = _doneTarget;
@synthesize doneHandler = _doneHandler;
- (id) initWithFrame: (CGRect) frame withHeight:(float)height{
if ((self = [super initWithFrame: frame])) {
self.backgroundColor = [UIColor clearColor];
_pickerHeight = height;
UIDatePicker *picker = [[UIDatePicker alloc] initWithFrame: CGRectMake(0, _pickerHeight, frame.size.width, frame.size.height - _pickerHeight)];
[self addSubview: picker];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, frame.size.width, _pickerHeight)];
toolbar.barStyle = UIBarStyleBlackOpaque;
toolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle: @"Done" style: UIBarButtonItemStyleBordered target: self action: @selector(donePressed)];
UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
toolbar.items = [NSArray arrayWithObjects:flexibleSpace, doneButton, nil];
[self addSubview: toolbar];
self.datePicker = picker;
picker.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin;
self.autoresizesSubviews = YES;
self.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin;
}
return self;
}
- (void) setDatePickerMode: (UIDatePickerMode) mode {
self.datePicker.datePickerMode = mode;
}
- (void) donePressed {
if (self.doneTarget) {
[self.doneTarget performSelector:self.doneHandler withObject:nil afterDelay:0];
}
}
- (void) addTargetAndSelectorForDoneButton: (id) target action: (SEL) action {
self.doneTarget = target;
self.doneHandler = action;
}
No comments:
Post a Comment