【问题标题】:Problems presenting View Controller from UILocalNotification从 UILocalNotification 呈现视图控制器的问题
【发布时间】:2014-03-31 02:34:01
【问题描述】:

我第一次在 iOS 中使用本地通知,我想知道如何在启动时从不是默认 ViewController 的通知推送到特定视图。通过查看其他问题,我有代码

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

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

【问题讨论】:

    标签: ios objective-c uilocalnotification pushviewcontroller presentviewcontroller


    【解决方案1】:

    您需要在 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;
    
    
    
     } 
    

    包括我自己在内的大多数人都使用 UIAlertviews 而不是模态视图来获取本地通知,但上面的代码应该也能正常工作(省去了创建单独 VC 的工作)。

    【讨论】:

    • 你在哪里初始化对gameVC的引用 - 你需要在某处设置属性。
    • 是的,它需要在 didfinishlaunching 中使用选项进行初始化 - 让我更正编辑。
    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多