iPhone - 应用程序仍在运行,接收推送通知=更改视图

时间:2010-07-30 02:33:54

标签: iphone push-notification apple-push-notifications

我正在尝试在应用仍在运行时收到推送通知时更改视图。我尝试在 AppDelegate.m

中使用它
-(void)application:(UIApplication *)application didRecieveNotification:(NSDictionary *)userInfo
{ 
   TestClass *aTestClassViewController = [[TestClass alloc]initWithNibName:@"TestClass" bundle:nil];
   [self presentModalViewController:aTestClassViewController animated:YES];
   [aTestClassViewController release];
}

但它没有用。我甚至无法再次启动应用程序。所以我猜这是错误的做法。

任何想法的人?我会很感激。

2 个答案:

答案 0 :(得分:0)

解决*** 我是这样做的 - > 我首先显示了一个警报视图(我还是需要它) 然后使用

的方法
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
    TestClass *aSelectionScreenViewController = [[TestClass alloc] initWithNibName:@"TestClass" bundle:nil];
    [viewController presentModalViewController:aSelectionScreenViewController animated: YES]; 
    [aSelectionScreenViewController release];   }

答案 1 :(得分:0)

我们缺少一些关于您的应用程序的上下文,但您的基本问题是它是接收通知的应用程序委托对象,而不是视图控制器。这就是为什么你不能只做[self presentModalViewController:someViewController];

我认为这是你自己的答案的片段,它提供了你需要的东西:你的app委托(大概)有一个'viewController'成员,它是应用程序的根视图控制器。这是viewController对象,你需要做什么来做你需要的东西。在我正在查看的应用程序中,我在应用程序委托中有一个tabBarController成员,并在收到通知时显示警报视图和/或更改选定的选项卡索引。

当有消息进来时,我会让你的app委托调用你的主视图控制器上的一个函数,并让该函数显示警报视图,然后做你需要做的任何状态更改,以使主视图控制器反映收到的通知。