从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的工作量)。
你在哪里初始化对gameVC的引用 - 你需要在某处设置属性。 – Paulw11
是的,它需要在带有选项的didfinishlaunching中初始化 - 让我纠正编辑。 – Paulo