Почему мой presentModalViewController не работает изнутри AppDelegate? - PullRequest
3 голосов
/ 29 февраля 2012

Почему я хочу использовать presentModalViewController в AppDelegate? - Обработка didReceiveLocalNotification, поэтому я могу запустить отдельный modalView поверх моего приложения для обработки уведомления

Как выглядит моя архитектура взгляда? - Использование раскадровок - MainStoryBoard: -> TabBarController-> NavigationController

Что происходит? - Ничего, вот в чем проблема :-D - Когда я нажимаю кнопку действия из UILocalNotification, приложение открывается, но просто показывает последнее открытое представление из tabbarcontroller.

Как вы можете видеть ниже, моей последней попыткой было представить modalViewController поверх этого текущего представления, вот так: [self.window.rootViewController.tabBarController.selectedViewController.navigationController presentModalViewController:navigationController animated:YES];

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {</p> <pre><code>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];

}

Обновление

Кажется, что это ноль: self.window.rootViewController.tabBarController.selectedViewController.navigationController

Решение

[self.window.rootViewController presentModalViewController: навигационный анимированный контроллер: ДА];

Ответы [ 2 ]

6 голосов
/ 29 февраля 2012

Попробуйте это:

[self.window.rootViewController presentModalViewController:controller
                                                  animated:YES];
0 голосов
/ 29 февраля 2012

Вы пробовали следующее?

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

Тем не менее, даже если это сработает, я действительно призываю вас пересмотреть ваши варианты дизайна, чтобы избежать необходимости делать это. Обход стека навигации таким образом, чтобы получить доступ к вещам, может стать очень грязным, и я настоятельно рекомендовал бы против этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...