我正在尝试在应用仍在运行时收到推送通知时更改视图。我尝试在 AppDelegate.m
中使用它-(void)application:(UIApplication *)application didRecieveNotification:(NSDictionary *)userInfo
{
TestClass *aTestClassViewController = [[TestClass alloc]initWithNibName:@"TestClass" bundle:nil];
[self presentModalViewController:aTestClassViewController animated:YES];
[aTestClassViewController release];
}
但它没有用。我甚至无法再次启动应用程序。所以我猜这是错误的做法。
任何想法的人?我会很感激。
答案 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委托调用你的主视图控制器上的一个函数,并让该函数显示警报视图,然后做你需要做的任何状态更改,以使主视图控制器反映收到的通知。