收到推送通知后显示模态

时间:2010-08-23 04:55:37

标签: iphone uiviewcontroller modal-dialog push-notification

每当收到推送通知时(应用程序运行时)我都需要显示通知模式。我的应用程序有一个标签栏,我通过将通知模式推到标签栏控制器上来实现部分工作。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {        
    NotificationViewController *vc = [[NotificationViewController alloc] init];
    [tabBarController presentModalViewController:vc animated:YES];
    [vc release];
}

但是,当已经有一个隐藏标签栏控制器的不同模态打开时,这似乎失败了。收到推送通知时,确保NotificationViewController 总是显示的最佳方法是什么,即使已经隐藏了标签栏控制器的模态打开了?

1 个答案:

答案 0 :(得分:3)

你可以做两件事。首先是解除当前的模态控制器,但它可能会使用户感到困惑。第二件事就是这样:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {      
    UIViewController* currentController = tabBarController;
    if ( [currentController modalViewController] != nil )
          currentController = [currentController modalViewController];

    NotificationViewController *vc = [[NotificationViewController alloc] init];
    [currentController presentModalViewController:vc animated:YES];
    [vc release];
}

可能不是最漂亮的事情,因为它在模态控制器中打开另一个模态控制器,但它可以工作。