2

我正在我的应用程序中处理UIApplicationSignificantTimeChangeNotification,当午夜到来时,应用程序中的所有其他屏幕都会优雅地刷新。我遇到的问题是UIDatePickerUIPickerViewrefreshAllComponents方法,我在另一个屏幕中使用它来更新午夜变化。我想为UIDatePicker设置相同的内容,但不幸的是我找不到刷新它的方法,并且Today仍然是Today,尽管它已经是Yesterday了。有什么出路吗?

4

3 回答 3

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 替换为 newPicker,复制设置,因此没有人会注意到更改。如果您有其他对选取器视图的引用,您也需要更新它们。

于 2011-05-03T02:43:09.707 回答
1

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

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

只需将日期参数 [NSDate date] 和 YES 作为动画参数传递。这应该可以工作,因为午夜 [NSDate date] 必须产生正确的当前日期。

于 2009-08-30T18:08:34.647 回答
0

这是一个相当古老的话题,但正如我在谷歌上发现的那样,其他人也是如此。什么对我有用:

[datePicker becomeFirstResponder];
[datePicker reloadInputViews]; 
于 2012-07-11T16:33:55.963 回答