This is a dynamic prototype UITableView: In my cellForRowAtIndexPath:
I have dequequed my custom cell and this works just fine:
TimeSetViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"timeCell" forIndexPath:indexPath];
Next I set TimePicker to UITextField in timeCell and this works fine as well (i.e. the time picker displayed onclick of UITextField in
timeCell
) :// Start Time UIDatePicker *sTimePicker = [[UIDatePicker alloc]init]; sTimePicker.datePickerMode = UIDatePickerModeTime; sTimePicker.backgroundColor = [UIColor whiteColor] [cell.startTripTime setInputView:sTimePicker]; // End Time UIDatePicker *eTimePicker = [[UIDatePicker alloc]init]; eTimePicker.datePickerMode = UIDatePickerModeTime; eTimePicker.backgroundColor = [UIColor whiteColor]; [cell.endTripTime setInputView:eTimePicker];
Next I wanted to update the cell's UITextField through an event, in which I have understood from @Mani's post, I have set:
sTimePicker.tag = 1; eTimePicker.tag = 2; [sTimePicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged]; [eTimePicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];
And in my custom method
-(void)updateTextField:(UIDatePicker *)sender
I have included this://Date Formatter NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; [dateFormat setTimeStyle: NSDateFormatterShortStyle]; if(sender.tag == 1){ //Get Start Date UIDatePicker *starttimepicker = (UIDatePicker*)sender.inputView; thisStartTime = [starttimepicker date]; //Display Date NSString *startTimeText = [dateFormat stringFromDate:thisStartTime]; sTimeText = [NSString stringWithFormat:@"%@",startTimeText]; } if(sender.tag == 2){ //Get End Date UIDatePicker *endtimepicker = (UIDatePicker*)sender.inputView; thisEndTime = [endtimepicker date]; //Display Date NSString *endTimeText = [dateFormat stringFromDate:thisEndTime]; eTimeText = [NSString stringWithFormat:@"%@",endTimeText]; }
Question Update
I managed to pass
startTimeText
andendTimeText
tocell.startTripTime.text
andcell.endTripTime.text
throughsTimeText
andeTimeText
.And I used
[_tableView reloadData];
in-(void)updateTextField:(UIDatePicker *)sender
(after the two if blocks) and the data is displayed in mycell.startTripTime
andcell.endTripTime
UITextField, but it appears the same in across of my sections, while I want it to change only the first section's time, how can I fix that?//I couldn't include the image but the output of the UITableView looks like this: _________________________ Section 1 _________________________ Start Time : 4:50 PM _________________________ End Time: 5:50 PM _________________________ Section 2 _________________________ Start Time : 4:50 PM _________________________ End Time: 5:50 PM _________________________
And the
[_tableView reloadData];
seems to interfere and reloads the view while I haven't even finish picking the time that I wanted, how can I fix this too?