我的应用发送本地通知,每个通知都有一个ID。一旦用户点击其中一个通知它应该显示一个应该已收到通知ID的特定视图。
实施例。出现ID为23的通知,用户点击它,应用程序应显示屏幕“详细信息”,其中将加载id 23的所有信息。
所以在我的AppDelegate中,我使用此方法拦截用户通知点击。
- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
但是在这种方法中,如果我执行一个segue,它就不起作用了。 而是使用以下代码它几乎可以工作,但“eventDetails”视图显示为空,因为我无法将通知ID传递给它。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"eventDetails"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:vc];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:navigationController];
//[self.window setBackgroundColor:[UIColor whiteColor]];
[self.window makeKeyAndVisible];
答案 0 :(得分:1)
你可以尝试这种方式,我希望它能为你效用
- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
// codes of Local Notification
[self.rootviewcontroller.view addSubView:infoView];
}
答案 1 :(得分:0)
找到解决方案!
我在appdelegate.m上添加了这个:
#import "eventDetailsController.h"
并更改了以前的代码,如下所示:
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
eventDetailsController *edView = [[dettaglioEvento alloc] init];
edView = [mainStoryboard instantiateViewControllerWithIdentifier:@"eventDetails"];
edView.passedId = self.idToShow;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:edView];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:navigationController];
//[self.window setBackgroundColor:[UIColor whiteColor]];
[self.window makeKeyAndVisible];