每当重新加载视图或一段时间后刷新iOS UIDatePicker?

时间:2014-09-04 19:13:55

标签: ios objective-c uidatepicker

我有一个我制作的iPhone应用程序,在一个视图上有一个UIDatePicker。

最初启动应用时 - 首先加载视图;在viewDidLoad中我将UIDatePicker get设置为当前日期/时间。它工作正常。

现在,如果用户最小化应用程序并执行其他操作(但不会终止应用程序),然后返回应用程序,则返回该视图时日期/时间不会更新。

我想知道如何在加载视图的任何时候让它“刷新”UIDatePicker(例如,当它在已经打开但是在后台之后返回它时)。

有什么想法吗?

如果没有快速/简单的方法 - 我还考虑在UIDatePicker最初加载时创建一个与时间相关的变量 - 然后在重新加载它时检查是否自上次查看以来已超过10分钟。如果是这样,那么它会将UIDatePicker设置为当前日期/时间。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您的视图加载可能看起来像这样

- (void)viewDidLoad {
    [super viewDidLoad];

    // listen for notifications for when the app becomes active and refresh the date picker
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshDatePicker) name:UIApplicationDidBecomeActiveNotification object:nil];
}

然后在你的viewWillAppear:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    // refresh the date picker when the view is about to appear, either for the
    // first time or if we are switching to this view from another
    [self refreshDatePicker];
}

并简单地将刷新方法实现为:

- (void)refreshDatePicker {
    // set the current date on the picker
    [self.datepicker setDate:[NSDate date]];
}

这将在两个案例中更新您的日期选择器,当应用程序打开时视图从另一个视图切换到此视图,以及当应用程序背景化并使用该视图到达前台时视图已经打开。

答案 1 :(得分:0)

您应该可以在viewWillAppear方法中设置日期。每次视图出现在屏幕上时都会调用该方法。

- (void) viewWillAppear: (BOOL) animated 
{
    [super viewWillAppear:animated];
    // update the date in the datepicker
    [self.datepicker setDate:[NSDate date]];
}