从UILocalNotification呈现视图控制器的问题

问题描述:

我第一次在iOS中使用本地通知,并且想知道如何从启动时不是默认ViewController的通知推送到特定视图。从寻找其他问题,我的代码从UILocalNotification呈现视图控制器的问题

-(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    [self.window.rootViewController presentViewController:gameViewController animated:NO completion:nil]; 
} 

gameViewController是视图控制器我要推(它不是一个导航控制器)的文件的名称。我收到的错误是“使用未声明的标识符'gameViewController'。我意识到这是因为它没有在appDelegate中声明,但我该怎么做呢?当我将它声明为属性代码编译,但当我按下时崩溃!的通知感谢您的帮助

您需要声明类和appdelegate.h属性看下面的代码:

#import "gameViewController.h" 
@class gameViewController; 

@interface XAppDelegate : UIResponder <UIApplicationDelegate > 

@property (nonatomic, strong) gameViewController *gameVC; 

然后在您的应用程序delegate.m - 合成属性

@synthesize gameVC; 
    ..... 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

{  
... 
gameVC= [[gameViewController alloc] initWithNibName:@"gameViewController" bundle:nil]; 
.... 
} 


    -(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 

[self.window.rootViewController presentViewController:gameVC animated:NO completion:nil]; 

app.applicationIconBadgeNumber = notif.applicationIconBadgeNumber-1; 



} 

包括我在内的大多数人都使用UIA lertviews代替本地通知的模态视图,但上面的代码也应该可以工作(节省创建单独VC的工作量)。

+0

你在哪里初始化对gameVC的引用 - 你需要在某处设置属性。 – Paulw11

+0

是的,它需要在带有选项的didfinishlaunching中初始化 - 让我纠正编辑。 – Paulo