我在我的iPhone应用程序中使用UIDatePicker,我保留了一个按钮,单击该按钮,datepicker的模式将在UIDatePickerModeTime和UIDatePickerModeDate之间切换。当我在模式为UIDatePickerModeDate的情况下更改日期选择器的日期时,更改的日期会在我切换模式时正确显示,但如果我更改时间并切换模式,再次将模式切换为UIDatePickerModeTime会将时间重置为12:00 am。我不明白为什么会发生这种情况以及如何处理it.Please帮助。
发布于 2011-07-25 18:17:19
我使用了一个Date对象,当我呈现日期选择器时,我将该对象声明为一个属性,在该对象中存储了来自日期选择器的日期。我在更改日期选择器中的日期时更新了存储的日期(使用UIControl通知)在更改日期选择器的模式时,我将相同的日期分配给了日期选择器。
我知道这相当简单,但是以前我尝试过同样的事情,通过使用一个简单的Date对象,这个对象没有work.Making它,一个属性为我做了这件事
发布于 2012-08-17 05:32:51
我也有类似的问题。我第一次从UIDatePickerModeDate换到UIDatePickerModeTime的时候,时间还可以。但是,当我切换回..Date模式,然后再次切换到..Time模式时,时间显示为00:00。此后,无论模式更改的次数如何,时间始终保持在00:00。我对我的UIDatePicker进行了编程建模,与苹果UICatalog应用程序中的UIDatePicker相同。这种行为在他们的应用中并不存在。
首先,我将拾取器的NSDate值保存在一个保留的@属性中,目的是在收到UIControl通知时检索并重置拾取器。但是,当选择器从日期模式更改为时间模式时,我找不到触发的事件。我甚至尝试过这样的东西:
[myDatePicker addTarget:self action:@selector(getDateTime:) forControlEvents:UIControlEventAllEvents];当然,如果我更改了选择器的日期(或时间),事件就会触发,但正如我前面提到的,不是在我更改模式时触发的。
我最终使用了一个UISegmentedControl (与UICatalog应用程序中的相同),它针对上面我切换模式的相同事件方法。但是,当我将拾取器重置为保存的NSDate值时,时间仍然是00:00。然后,我使用NSLog验证保存的值是否正确,并发现它的时间值部分也已更改为00:00!这确实很奇怪,因为我没有保存新的NSDate值。最初保存的值只是自己改变了而已!
我仍然在调查这个问题,并非常接近将其称为错误,特别是当一个UIDatePicker是以编程方式添加而没有支持NIB的时候。
更新:我的最终解决方案与您的几乎相同。由于某些原因,当保存的日期存储为NSDate值时,错误仍然存在。将其存储为NSString并以两种方式进行类型转换都起到了作用:
self.saveDate = (NSString*)self.myDatePicker.date;
...
[self.myDatePicker setDate:(NSDate*)self.saveDate animated:NO];另外,由于我是通过GCD dispatch_async块检索日期并将其保存到外部设备,所以它的属性为self。符号也是必需的(甚至在main_que上)。
最终结论:
我现在确信,每次访问选取器时设置UIDatePicker日期是一个必要的要求,而不是一个错误。使用苹果的UICatalog应用程序,当你只将日期设置为今天一次,然后在日期和时间模式之间切换时,他们的应用程序表现出完全相同的行为。保留日期,但将时间重置为00:00。如果切换到日期或时间以外的模式并切换回来,则所有模式都将重置为其下限值。
https://stackoverflow.com/questions/6730592
复制相似问题