每当收到推送通知时(应用程序运行时)我都需要显示通知模式。我的应用程序有一个标签栏,我通过将通知模式推到标签栏控制器上来实现部分工作。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NotificationViewController *vc = [[NotificationViewController alloc] init];
[tabBarController presentModalViewController:vc animated:YES];
[vc release];
}
但是,当已经有一个隐藏标签栏控制器的不同模态打开时,这似乎失败了。收到推送通知时,确保NotificationViewController 总是显示的最佳方法是什么,即使已经隐藏了标签栏控制器的模态打开了?
答案 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];
}
可能不是最漂亮的事情,因为它在模态控制器中打开另一个模态控制器,但它可以工作。