6

在此处输入图像描述

我正在制作一个我正在使用的 iPhone 应用程序,并在操作UIDatePicker表中显示选定的时间。在操作表中,时间以 10 分钟间隔显示。

textfield当我滚动时,值设置正确Datepicker

如果我 滚动操作表,则直接单击选择按钮,然后文本字段设置当前时间(11:56),但我在操作表(11:50)中选择时间。( textfield) 显示不正确的值。

如何设置textfield' 值 ( 11:50)。给我一些解决方案。

4

4 回答 4

1

只需在按下选择按钮后从日期选择器中设置 dateSelected....

NSDate *date = datePicker.date;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy"];    
NSString *dateString = [formatter stringFromDate:date];
yourTxtField.text = dateString;
于 2012-08-24T07:45:42.680 回答
1

编辑 让你的班级在你的选择器中处理 UIControlEventValueChanged 事件。添加这一行 ViewDidLoad 方法或当您的操作表显示时:

  [picker addTarget:self action:@selector(dateChanged:) 
          forControlEvents:UIControlEventValueChanged];

现在更改日期时将调用选择器

更新

- (void) dateChanged:(id)sender{
    // handle date changes and set in textField
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here
    self.dateTexField.text = strdate;
}

如果未调用上述方法,则表示日期未更改,因此请始终在 textField 中设置默认日期。


将日期转换为字符串对象

更新

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here

现在为 textField 设置值,如下所示:

  self.dateTextField.text = strdate;
于 2012-08-24T07:18:56.937 回答
0

我认为最简单的方法是将带有完成按钮的工具栏附加到以 UIDatePicker 作为其 inputView 的 TextField 上。通过在 TextViewDidBeginEditing 中维护对它的引用来跟踪当前的 TextField。然后在完成按钮中执行以下操作:

if (_currentTextField == _myTextFieldThatUsesADatePicker) {
    self.myDateProperty = _myDatePicker.date;
}
于 2013-01-30T15:44:23.427 回答
0

我不知道这种方式是否正确,但它对我有用

-(void)selectedTime{
    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
//    [outputFormatter setDateFormat:@"h:mm a"];
    [outputFormatter setDateFormat:@"HH:mm:ss"];
    selectedTime = [outputFormatter stringFromDate:datePicker.date];
    NSArray *temp=[selectedTime componentsSeparatedByString:@":"];
    NSLog(@"%@",temp);
    NSInteger mins=[[temp objectAtIndex:1]integerValue];
    //check your interval here
    if (mins<=29) {
        selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"00",@"00"];
    }else if (mins>=31 && mins<=59){
        selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"30",@"00"];
    }else{
//        selectedTime = [outputFormatter stringFromDate:datePicker.date];
    }
    if (self.delegate && [self.delegate respondsToSelector:@selector(SelectedValue:)]) {
        [self.delegate SelectedValue:selectedTime];
    }
    [self.popupController dismiss];
}

我的间隔是30分钟

于 2016-02-17T13:09:51.280 回答