0

当我收到远程通知时,我试图从 App 委托方法更改为主视图,以便在主视图中执行转场到另一个视图,但我收到 NSInvalidArgumentException

didReceiveRemoteNotification 时 App Delegate 中的代码:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    EmergencyMasterViewController* maincontroller = (EmergencyMasterViewController*)self.window.rootViewController;
    [maincontroller alert];
}

MasterView 中的代码:

-(void)alert
{
    [self performSegueWithIdentifier: @"Warning" sender: self];
}

我得到的错误是:[UINavigationController alert]: unrecognized selector

4

1 回答 1

1

这是因为你的窗口 rootViewController 实际上是一个 UINavigationController 而不是你的 EmergencyMasterViewController。您需要检查如何在应用程序委托 didFinishLaunchingWithOptions 或类似内容中分配窗口根视图控制器。

尝试将视图控制器嵌入到导航控制器中,例如:

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; 
NSArray *viewControllers = navigationController.viewControllers 
EmergencyMasterViewController *maincontroller = [viewControllers objectAtIndex:0];

UINavigationController 在尝试获取 EmergencyMasterViewController 之前先弹出到根视图控制器可能更安全,以防用户已经在导航堆栈中导航:

[navigationController popToRootViewControllerAnimated:NO];
于 2013-06-07T16:34:52.920 回答