如何以通知作为新窗口显示模态视图? (没有父母vc)

时间:2012-05-03 11:54:38

标签: ios xcode uiviewcontroller uilocalnotification uiwindow

我在处理传入的本地通知时遇到很多问题。 我的应用程序使用故事板,并有一个tabbarcontroller作为rootviewcontroller。 目前,我发布了来自' didReceiveLocalNotification'的模态视图。以下列方式:

MedicationReminderViewController *vc = [[MedicationReminderViewController alloc] initWithNibName:@"MedicationReminderViewController" bundle:nil];
    vc.notificationInfo = [[NSDictionary alloc] initWithDictionary:notification.userInfo];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];
    navController.navigationBar.barStyle = UIBarStyleBlackOpaque;
    navController.title = @"title";

    UITabBarController *tc = (UITabBarController *)self.window.rootViewController;
    UINavigationController *nc = (UINavigationController *)tc.selectedViewController;    
    [[nc visibleViewController] presentModalViewController:navController animated:YES];

这适用于所有场合但不适用。我想在新窗口中显示模态视图,而不是当时可以显示的任何其他内容。当用户处理传入通知时,模态视图将自行解除,并且在通知进入之前处于活动状态的基础视图将再次可见。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

window对象的AppDelegate中执行此操作。我相信你可以在那里做到。 从我的头脑中,我相信它的window.rootViewController。但不确定。

怎么做: 当您收到UILocalNotification时,您可以在AppDelegate中收到它。当通知“到达”时,请使用presentModalViewController上的self.window.rootViewController

更新
来自doc

  

如果应用程序是最重要的,并且在系统交付时可见   通知,没有显示警报,没有图标标记,没有声音   玩过的。但是,application:didReceiveLocalNotification:是   如果应用程序委托实现它,则调用它。该   UILocalNotification实例传递给这个方法,并且   委托可以检查其属性或访问来自的任何自定义数据   userInfo字典。

使用application:didReceiveLocalNotification:方法。我希望能回答你的问题。