0

这是一个动态原型 UITableView:在我的cellForRowAtIndexPath:

  1. 我已经取消了我的自定义单元格,这工作得很好:

    TimeSetViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"timeCell" forIndexPath:indexPath];
    
  2. 接下来,我在 timeCell 中将 TimePicker 设置为 UITextField ,这也可以正常工作(即时间选择器在 UITextField 中的 onclick 中显示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];
    
  3. 接下来我想通过一个事件来更新单元格的 UITextField ,我从@Mani的帖子中了解到,我已经设置了:

    sTimePicker.tag = 1;
    eTimePicker.tag = 2;
    
    [sTimePicker addTarget:self action:@selector(updateTextField:)
         forControlEvents:UIControlEventValueChanged];
    [eTimePicker addTarget:self action:@selector(updateTextField:)
          forControlEvents:UIControlEventValueChanged];
    

    在我的自定义方法中,-(void)updateTextField:(UIDatePicker *)sender我包含了这个:

    //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];
    }
    

问题更新

  1. 我设法通过startTimeTextand 和endTimeTexttocell.startTripTime.textcell.endTripTime.text通过sTimeTextand eTimeText

  2. 我使用[_tableView reloadData];-(void)updateTextField:(UIDatePicker *)sender(在两个if块之后),数据显示在我的cell.startTripTimecell.endTripTimeUITextField 中,但在我的各个部分中显示相同,而我希望它只更改第一部分的时间,我该如何解决?

    //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
    _________________________
    
  3. [_tableView reloadData];似乎干扰并重新加载视图,而我什至还没有完成选择我想要的时间,我该如何解决这个问题?

4

1 回答 1

0

操作方法应该发送到选择器之一,startStripTime 似乎是 UIView 实例而不是 UIDatePicker 实例。
更改其值的是日期选择器,而不是包含它的视图。
您还应该相应地更改更新方法。

于 2015-05-17T07:00:21.760 回答