OGeek|极客世界-中国程序员成长平台

标题: ios - 如何在 iOS 中的特定时间每天更改 View Controller [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 18:17
标题: ios - 如何在 iOS 中的特定时间每天更改 View Controller

我有一个案例,用户需要在每天早上 8 点之前提交表单。

当他们提交时,会覆盖一个确认 View 以向用户显示他们已提交并阻止他们再次提交。

早上 8 点之后,我想通过隐藏覆盖 View 来清除表单并让表单 View 再次可用。如果可能,我想在早上 8 点的某个时间点执行此操作。

我正在考虑使用 NSTimer 来完成此任务。我可以设置一个将在早上 8 点运行的计时器来清除表单并移除覆盖 View 吗?

有没有更好的方法来处理这种情况?



Best Answer-推荐答案


您可以使用本地推送通知。官方文档在这里 https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html

类似的东西:

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = [NSDate date]; // Replace me with your "event" date
localNotification.timeZone = [NSTimeZone localTimeZone];
localNotification.repeatInterval = kCFCalendarUnitDay;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

然后您可以按照文档中的说明“捕捉”通知

If your app is frontmost, the application:didReceiveRemoteNotification: or application:didReceiveLocalNotification:method is called on its app delegate If your app is not frontmost or not running you handle the notifications by checking the options dictionary passed to the application:didFinishLaunchingWithOptions: of your app delegate for either the UIApplicationLaunchOptionsLocalNotificationKey or UIApplicationLaunchOptionsRemoteNotificationKey key.

您不能只使用 NSTimer,因为当您的应用关闭时它不会运行,但是涉及 NSTimer 的另一个解决方案是为事件日期创建一个 NSTimer,然后观察 UIApplicationDidEnterBackgroundNotification ,这里如果定时器正在运行,你将停止定时器,将 timer.fireDate 持久化(你可以将它保存在 NSUserDefault 中),最后观察 UIApplicationDidBecomeActiveNotification,你可以重新创建定时器(减去当前时间与您之前保存的值),或者如果事件时间已经过去,则只触发操作。

关于ios - 如何在 iOS 中的特定时间每天更改 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21414437/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4