Iphone UIDatePicker与UIApplicationsSignificantTimeChangeNotification

Iphone UIDatePicker与UIApplicationsSignificantTimeChangeNotification,iphone,uidatepicker,Iphone,Uidatepicker,我正在我的应用程序中处理UIApplicationsSignificantTimeChangeNotification,当午夜来临时,应用程序中的所有其他屏幕都会优雅地刷新。我遇到的问题是使用UIDatePickerUIPickerView具有refreshAllComponents方法,我在另一个屏幕中使用该方法在午夜更改时进行更新。我想为UIDatePicker提供同样的功能,但不幸的是,我找不到刷新它的方法,今天仍然是今天,尽管已经是昨天了。有什么出路吗?您可以使用UIDatePicker

我正在我的应用程序中处理UIApplicationsSignificantTimeChangeNotification,当午夜来临时,应用程序中的所有其他屏幕都会优雅地刷新。我遇到的问题是使用UIDatePickerUIPickerView具有refreshAllComponents方法,我在另一个屏幕中使用该方法在午夜更改时进行更新。我想为UIDatePicker提供同样的功能,但不幸的是,我找不到刷新它的方法,今天仍然是今天,尽管已经是昨天了。有什么出路吗?

您可以使用UIDatePicker的方法刷新它

- (void)setDate:(NSDate *)date animated:(BOOL)animated
只需将日期参数[NSDate date]和YES作为动画参数传递即可。
这应该可以工作,因为午夜之后[NSDate date]必须生成正确的当前日期。

为什么不用新实例替换UIDatePicker

UIDatePicker *oldPicker = self.myDatePicker;
UIDatePicker *newPicker = [[UIDatePicker alloc] initWithFrame:oldPicker.frame];
[newPicker setDate:oldPicker.date animated:NO];
[[oldPicker superview] addSubview:newPicker];
[oldPicker removeFromSuperview];
self.myDatePicker = newPicker;
[newPicker release];

上面的代码将旧选择器替换为新选择器,复制设置,因此没有人会注意到更改。如果您有其他对picker视图的引用,您也需要更新它们。

这是一个非常古老的主题,但正如我在google中发现的那样,其他人也会这样做。 对我有用的是:

[datePicker becomeFirstResponder];
[datePicker reloadInputViews]; 

一模一样。是的,它会移动到下一个日期,但今天仍然是今天,而现在已经是昨天。遇到同样的问题-您是否找到了修复方法?可以将其用作解决方法。但是我不确定它在视觉上是否会很好看。我需要试试。。。无论如何,谢谢你的想法。交换将是即时的,所以用户不应该在视觉上注意到。或者,您可以启用动画,以便用户将更改视为交叉淡入淡出。如果这是一个正确的答案,很抱歉我没有勾选它,因为我没有时间去证明它。