Iphone 我想更改UIDatePicker';动态选择datePickerMode

Iphone 我想更改UIDatePicker';动态选择datePickerMode,iphone,uidatepicker,Iphone,Uidatepicker,我想能够一个日期选择器可以输入月日年时分。 我知道如果有两个UIDatePicker对象,这是可能的。 例如 UIDATECOPJ1//月日年 UIDATECOPJ2//一小时一分钟 但我不想为一个日期输入使用两个UIDatePicker:月-日-年-小时-分钟。 所以我做了一个UIDatePicker和一个UIButton。 该按钮用于更改UIDatePicker的datePickerMode 选择器的数字可以更改。[mm | dd | yyyy][hh:mm] 但是当选择器的模式发生如下变化

我想能够一个日期选择器可以输入月日年时分。 我知道如果有两个UIDatePicker对象,这是可能的。 例如 UIDATECOPJ1//月日年 UIDATECOPJ2//一小时一分钟

但我不想为一个日期输入使用两个UIDatePicker:月-日-年-小时-分钟。 所以我做了一个UIDatePicker和一个UIButton。 该按钮用于更改UIDatePicker的datePickerMode

选择器的数字可以更改。[mm | dd | yyyy][hh:mm]

但是当选择器的模式发生如下变化时

[hh:mm]->[mm | dd | yyyy]->[hh:mm]

选择器的小时日期变为00:00,即使模式更改前设置为11:59

为什么?

无论模式如何改变,月-日-年都不会改变

选择器的小时日期变为00:00,即使模式更改前设置为11:59。为什么?


可能是因为日期选择器在mm | dd | yyyy模式下存储时间设置为午夜的日期。因此,您必须将所选时间存储在单独的
NSDate
对象中,当用户从mm | dd | yyyy切换到hh:mm时,将日期选择器的日期设置为正确的日期和时间(通过
NSDateComponents
从一个日期提取时间和分钟,从另一个日期提取年/月/日,并用所有组件合成一个新日期)。

感谢您的回答

我在原始代码中添加了3行,如下所示。
到目前为止似乎还不错

    - (IBAction) switchDateTime {
  switch (datePicker_.datePickerMode) {
    case UIDatePickerModeDate: {
      datePicker_.datePickerMode = UIDatePickerModeDateAndTime;
      [swBtn_ setTitle:NSLocalizedString(@"swichBtn_date", @"") forState:UIControlStateNormal];
    } break;
    case UIDatePickerModeDateAndTime: {
      NSDate *tmp = [datePicker_.date copy];//<- added
      datePicker_.datePickerMode = UIDatePickerModeDate;
      datePicker_.date = tmp;               //<- added
      [tmp release];
      [swBtn_ setTitle:NSLocalizedString(@"swichBtn_time", @"") forState:UIControlStateNormal];
    } break;
    default:
      assert(0);
      break;
  }
}
-(iAction)switchDateTime{
开关(日期选择器\日期选择器模式){
案例UIDatePickerModeDate:{
datePicker_u2;.datePickerMode=UIDatePickerModeDateAndTime;
[swBtn_uu设置标题:NSLocalizedString(@“swichBtn_u日期”,@“”)用于状态:UIControlStateNormal];
}中断;
案例UIDatePickerModeDateAndTime:{
NSDate*tmp=[datePicker_.date copy]//