我有一个 UILocalNotification ,它以这种方式在 UIViewController 的 UIView 部分中发送:
[[UIApplication sharedApplication] scheduleLocalNotification:_localNotif];
我希望我的应用程序在以下情况下回复它:
该文档引导我在 AppDelegate.m 中修改此方法:
- (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification {
NSLog(@"received notification");
//reload views
}
但是我不知道如何重新加载UIViewController。
答案 0 :(得分:0)
我可以使用UILocalNotification的哪些属性来确定哪些属性 UIViewController发了吗?
您可以使用userInfo
UILocalNotification
属性来实现此特定目的。所以,像:
localNotification.userInfo = @{ @"currentViewController" : self }; // put the instance of the current view controller into the userInfo dictionary
如何从AppDelegate加载特定的UIViewController?
您可以通过应用程序的主rootViewController
的{{1}}属性访问当前的视图堆栈,该属性存储在UIWindow
的{{1}}属性中。如果您只想通知您的window
已收到本地通知,您可以发布AppDelegate
并添加应作为观察者重新加载的视图控制器UIViewController
所以,例如当您收到NSNotification
时,代码可能看起来像这样:
NSNotification
在要重新加载的UILocalNotification
的{{1}}中:
- (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification {
[[NSNotificationCenter defaultCenter] postNotificationName:@"received_local_notification" object:nil];
}