在iPhone上收到本地通知时显示视图控制器时出现问题

在iPhone上收到本地通知时显示视图控制器时出现问题,iphone,objective-c,ios,uiviewcontroller,uilocalnotification,Iphone,Objective C,Ios,Uiviewcontroller,Uilocalnotification,以下代码是我在应用程序收到特定本地通知时显示视图控制器的最新尝试: - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{ NSLog(@"Notification Received. UserInfo: %@", [notification.userInfo valueForKey:@"notificationTy

以下代码是我在应用程序收到特定本地通知时显示视图控制器的最新尝试:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
    NSLog(@"Notification Received.  UserInfo: %@", [notification.userInfo valueForKey:@"notificationType"]);
    if ([[notification.userInfo valueForKey:@"notificationType"] isEqualToString:@"backup"])
    {
        NSLog(@"Backup notification received.");
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:@"Yes" forKey:@"shouldBackup"];
        [defaults synchronize];
        SettingsViewController *vc = [self.window.rootViewController.tabBarController.viewControllers objectAtIndex:3];
        [self.window.rootViewController.tabBarController.navigationController pushViewController:vc animated:NO];
    }
    else
    {
        NSLog(@"Did receive notification: %@, set for date:%@ .", notification.alertBody, notification.fireDate);
    }
}
然后我有一段代码,我在viewDidAppear方法中使用它来确定是否执行备份:

if ([[defaults objectForKey:@"shouldBackup"] isEqualToString:@"Yes"]){
        [defaults setObject:@"No" forKey:@"shouldBackup"];
        [defaults synchronize];

        HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
        [self.navigationController.view addSubview:HUD];

        HUD.delegate = self;
        HUD.labelText = @"Backing Up Your Data..";
        HUD.minSize = CGSizeMake(135.f, 135.f);

        [HUD showWhileExecuting:@selector(performBackup) onTarget:self withObject:nil animated:YES];
    }
然而,似乎从未调用viewDidAppear,有人能解释我做错了什么吗?我现在已经尝试了几种不同的方法,但似乎无法使其发挥作用

谢谢


类型在

中,您需要将SettingsViewController从NavigationController推送到堆栈上,以便调用其委托方法(在本例中,ViewDid出现)。您的根视图控制器似乎是一个TabBarController。在本例中,将UINavigationControllerDelegate添加到根VC中,可以在此处找到有关下一步操作的更多信息

另外,您确定viewDidAppear没有被调用,或者只是其中的代码没有被调用?添加一个断点来查找

最后,您是否有[超级视图显示:动画];在ViewDidDisplay中设置ViewController的方法

如果所有其他操作都失败,则始终可以从父视图控制器中手动调用ViewDidDisplay:)

希望这有帮助