2011-04-24 52 views
0

我希望能够在一个日期选择器中输入月份 - 日 - 年 - 小时 - 分钟。 我知道如果两个UIDatePicker对象是可能的。 例如 UIDatePicker obj1; //为月 - 日年 UIDatePicker obj2; //小时分钟我想要动态更改UIDatePicker的datePickerMode

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

选取器的图可以改变。 [毫米| DD | YYYY] < - > [HH:MM]

但是,当拾取器的模式改变为以下,

[HH:MM] - > [毫米| DD | YYYY] - > [ hh:mm]

选择器的小时日期变为00:00,即使在模式更改之前设置为11:59也是如此。

为什么?

然而,月 - 日 - 年不改变模式改变。

回答

1

拾取器的小时日期变成00:00,即使设置像11:59模式改变之前。为什么?

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

+0

谢谢你的回答。 – user722484 2011-04-25 05:51:51

0

谢谢你的回答。

我在原始代码中添加了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; 
    } 
}