2009-08-30 93 views
2

我处理UIApplicationSignificantTimeChangeNotification在我的应用程序,并在应用程序中的所有其他屏幕是正常刷新时午夜来。我遇到的一个问题是UIDatePickerUIPickerView已有refreshAllComponents方法,我在另一个屏幕上使用以更新午夜更改。我想有相同的的UIDatePicker,但不幸的是我无法找到一个方法来刷新它,今天仍然今天,虽然它已经是昨天。任何出路?的UIDatePicker与UIApplicationSignificantTimeChangeNotification

+0

遇到同样的问题 - 你有没有找到解决办法? – 2010-08-09 14:12:31

+1

不幸的是,没有。 – 2010-08-10 11:13:08

回答

1

可以使用其方法

- (void)setDate:(NSDate *)date animated:(BOOL)animated 

只需通过作为日期参数[NSDate的日期]刷新的UIDatePicker和YES作为动画参数。 这应该在午夜之后[NSDate date]必须产生正确的当前日期。

+0

同样的事情。是的,它移动到下一个日期,但是今天仍然是今天,而现在已经是昨天。 – 2009-09-10 06:41:34

2

为什么不用新的实例替换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]; 

上面的代码将交换oldPicker for newPicker,复制设置,所以没有人会注意到这一变化。如果您对拾取器视图有其他参考,则还需要更新它们。

+0

人们可以使用它作为解决方法。不过,我不确定它在视觉上看起来不错。需要尝试......无论如何感谢您的想法。 – 2011-05-03 14:39:05

+0

交换将是即时的,因此用户不应该注意到。或者您可以启用动画,以便用户将该更改视为交叉淡入淡出。无论哪种方式,它不应该是震动。 – benzado 2011-05-03 21:17:59

0

这是一个很老的话题,但正如我在google上发现的那样,其他人也会这样。 对我而言:

[datePicker becomeFirstResponder]; 
[datePicker reloadInputViews]; 
+0

如果这是一个正确的答案,对不起,我没有'滴答作响,因为我没有时间来证明它。 – 2012-09-03 09:13:08

+0

没问题,只要它可以帮助别人:) – Zoleas 2012-09-03 11:55:05