Xcode在本地通知后显示特定视图

时间:2014-03-09 11:35:48

标签: ios xcode notifications views localnotification

我的应用发送本地通知,每个通知都有一个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];

2 个答案:

答案 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];