UIDatePicker如果未滚动UIDatePicker,则选择的值是错误的

时间:2012-08-24 06:32:49

标签: iphone objective-c uidatepicker

enter image description here

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

滚动 textfield

时,

Datepicker值设置正确

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

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

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

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

NSDate *date = datePicker.date;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy"];    
NSString *dateString = [formatter stringFromDate:date];
yourTxtField.text = dateString;

答案 2 :(得分:0)

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

if (_currentTextField == _myTextFieldThatUsesADatePicker) {
    self.myDateProperty = _myDatePicker.date;
}

答案 3 :(得分: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分钟