1

我第一次在iOS中使用本地通知,並且想知道如何從啓動時不是默認ViewController的通知推送到特定視圖。從尋找其他問題,我的代碼從UILocalNotification呈現視圖控制器的問題

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

gameViewController是視圖控制器我要推(它不是一個導航控制器)的文件的名稱。我收到的錯誤是「使用未聲明的標識符'gameViewController'。我意識到這是因爲它沒有在appDelegate中聲明,但我該怎麼做呢?當我將它聲明爲屬性代碼編譯,但當我按下時崩潰!的通知感謝您的幫助

回答

0

您需要聲明類和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

相關問題