Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is my presentModalViewController not working from inside AppDelegate?

Why do I want to use presentModalViewController in AppDelegate? - Processing didReceiveLocalNotification, so I can launch a seperate modalView on top of my app to process the notification

What does my view architecture look like? - Using storyboards - MainStoryBoard: ->TabBarController->NavigationController

What's happening? - Nothing, that's the problem :-D - When I press the action button from the UILocalNotification, the app opens, but just shows the last open view from the tabbarcontroller.

As you can see below my last effort was to present the modalViewController on top of that current view, like so: [self.window.rootViewController.tabBarController.selectedViewController.navigationController presentModalViewController:navigationController animated:YES];

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

UIApplicationState state = [application applicationState];
if (state == UIApplicationStateInactive) {
    // Application was in the background when notification was delivered.
    NSLog(@"Received notification while in the background");
}
else {
    NSLog(@"Received notification while running.");
}

MedicationReminderViewController *controller = [[UIStoryboard storyboardWithName:@"ModalStoryBoard" bundle:nil] instantiateViewControllerWithIdentifier:@"MedicationReminderVC"];

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
[self.window.rootViewController.tabBarController.selectedViewController.navigationController presentModalViewController:navigationController animated:YES];

}

Update

Seems that this is nil: self.window.rootViewController.tabBarController.selectedViewController.navigationController

Solution

[self.window.rootViewController presentModalViewController:navigationController animated:YES];

like image 326
Pieter Avatar asked Jan 26 '26 11:01

Pieter


1 Answers

Try this :

[self.window.rootViewController presentModalViewController:controller
                                                  animated:YES];
like image 112
NeverBe Avatar answered Jan 29 '26 02:01

NeverBe