我正在编写一个应用程序,让用户知道他们每天在同一时间等待新提示。如果应用程序在前台运行,我已经能够安排通知并为其编写代码。我遇到的问题是如何在应用程序处于后台时发生同样的事情。复杂的是我正在根据通知本身设置视图(哪些按钮是可见的等),因为下一步是要有第二个通知,使视图自己设置不同。目前,我在方法中的代码如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UILocalNotification *note = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
NSString *val = [note.userInfo objectForKey:1];
if ([val isEqual: @"first"]) {
}
return YES;
}
我的问题是我不知道如何在if语句中设置视图(即如何在视图中设置两个按钮[将它们称为button1和button2])。任何答案都会非常感激,如果这是一个令人难以置信的明显的事情,那么我道歉并且只要求某人至少指出我正确的方向。感谢
答案 0 :(得分:0)
不是100%,但相信
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
在开始加载视图之前完成,这样就更有意义了。
考虑到这一点,并且我已成功使用,我建议您设置一个公共var on app委托,用于存储您需要的信息。
之后只是检查
- (void)viewDidLoad
在viewController中,如果var为任何东西,并按照应用程序在Foreground中时的方式处理信息。
答案 1 :(得分:0)
我将尝试为您的问题提供更一般的答案:iOS编程基于MVC(模型 - 视图 - 控制器)软件架构模式,因此您必须使您的应用程序尽可能地符合MVC。这意味着,在您的情况下,只要您收到本地通知,无论您的应用程序在前台运行或在后台睡觉或只是准备从头开始,如果MVC砖块,应用程序将以相同的方式运行正确设置。
所以:
显然,如何执行此操作取决于您的应用显示不同视图的方式和位置,但为了简单起见,您可以:
因此,当您收到应用程序的本地通知时:
正如您所看到的,除了需要在应用获取通知时显示本地通知相关视图时,您不需要任何特殊代码来管理它。显然,如果您的本地通知视图位于视图层次结构的深层,并且您必须保持一定的一致性,则事情要复杂得多:在这种情况下,您必须重建整个层次结构,并且执行此操作的可能性取决于本地通知提供的信息。 在简单的情况下,即在实例化主导航控制器后,可以将本地通知视图控制器放在主窗口层次结构中: [applicationWindow setRootController:mainNavigationController] 您将在导航控制器堆栈中推送本地通知控制器: [mainNavigationController pushViewController:myLocalNotificationViewController animated:YES]
很抱歉,如果我没有详细说明您的具体问题(我不能),但可能我的解释会帮助您了解您的案例不是特例,但可以通过仔细跟踪主要案例轻松管理iOS架构模式。