2010-08-23 69 views
1

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

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

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

回答

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]; 
} 

也许不是最漂亮的事情,因为它会打开一个模态控制器另一个模式的控制器,但它的工作原理。

+0

这将工作正常我的目的。谢谢。 – 2010-08-23 20:01:10