ios - How to show uidatepicker from uitableviewcell -
how can show uidatepicker uitableviewcell, , have datepicker have toolbar @ top lefts resign it? there tutorials on how this?
i've had exact same thing.
- insert
uitextfielduitableviewcell(you may need create customuitableviewcelldepending whether want appear on every dynamic cell ofuitableviewor on single static cell). create properties
uidatepicker,uitoolbar, ,uitextfield, in ib hookuitextfieldpropertyuitextfieldcreated in step 1 (if you're using customuitableviewcellclass, that'suitextfieldproperty need go):@property (strong, nonatomic) uidatepicker * datepicker; @property (strong, nonatomic) uitoolbar * datepickertoolbar; @property (strong, nonatomic) iboutlet uitextfield *textfield; ... @synthesize datepicker, datepickertoolbar, textfield;setup
uidatepicker,uitoolbar, ,uitextfield:- (void)viewdidload { // initialise uidatepicker datepicker = [[uidatepicker alloc] init]; datepicker.datepickermode = uidatepickermodetime; [datepicker addtarget:self action:@selector(datepickervaluechanged:) forcontrolevents:uicontroleventvaluechanged]; // method respond changes in picker value // setup uitoolbar uidatepicker datepickertoolbar = [[uitoolbar alloc] initwithframe:cgrectmake(0, 0, self.view.bounds.size.width, 44)]; [datepickertoolbar setbarstyle:uibarstyleblacktranslucent]; uibarbuttonitem *extraspace = [[uibarbuttonitem alloc] initwithbarbuttonsystemitem:uibarbuttonsystemitemflexiblespace target:nil action:nil]; uibarbuttonitem *donebutton = [[uibarbuttonitem alloc] initwithtitle:@"done" style:uibarbuttonitemstyledone target:self action:@selector(dismisspicker:)]; // method dismiss picker when "done" button pressed [datepickertoolbar setitems:[[nsarray alloc] initwithobjects: extraspace, donebutton, nil]]; // note: if you're using dynamic cells, below 2 lines need in cellforrowatindexpath method instead. // set uitextfield's inputview uidatepicker textfield.inputview = datepicker; // set uitextfield's inputaccessoryview uitoolbar textfield.inputaccessoryview = datepickertoolbar; }setup
dismisspickermethod:-(void)dismisspicker:(id)sender{ [textfield resignfirstresponder]; }setup
datepickervaluechangedmethod:- (void)datepickervaluechanged:(id)sender{ nsdate *selecteddate = datepicker.date; nsdateformatter *df = [[nsdateformatter alloc] init]; [df setdateformat:@"hh:mm"]; [textfield settext:[df stringfromdate:selecteddate]]; }
note: in code, needed interface display time, hence date format set here (hh:mm). because of this, notice in uidatepicker initialization code in viewdidload, i've set mode uidatepickermodetime. date selections, may want set uidatepickermodedate.
Comments
Post a Comment