我希望能够让一个日期选择器输入月 - 日 - 年 - 小时 - 分钟。 我知道两个UIDatePicker对象是否可行。 例如 UIDatePicker obj1; //为月 - 日 - 年 UIDatePicker obj2; //适用于小时 -
但是我不想为一个日期输入设置两个UIDatePicker:month-day-year-hour-minute。 所以我制作了一个UIDatePicker和一个UIButton。 该按钮用于更改UIDatePicker的datePickerMode。
可以更改选择器的数字。 [mm | dd | yyyy]< - > [HH:MM]
但是当选择器的模式改变如下时,
[hh:mm] - > [mm | dd | yyyy] - > [HH:MM]
选择器的小时日期变为00:00,即使在模式改变之前设置为11:59。
为什么?
月 - 日 - 年不变,但模式已更改。
答案 0 :(得分:1)
选择器的小时日期变为00:00,即使在模式改变之前设置为11:59也是如此。为什么呢?
可能是因为日期选择器将日期设置为午夜,如果它是mm | dd | yyyy模式。因此,您必须将选定的时间存储在单独的NSDate
对象中,当用户从mm | dd | yyyy切换到hh:mm时,将日期选择器的日期设置为正确的日期和时间(通过提取时间)通过NSDateComponents
从另一个日期和年/月/日开始分钟,并与所有组件合成一个新日期。
答案 1 :(得分: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;
}
}