【发布时间】:2012-02-29 23:08:17
【问题描述】:
为什么要在 AppDelegate 中使用 presentModalViewController? - 处理 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 {
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:navigationController animated:YES];
【问题讨论】:
-
self.window.rootViewController.tabBarController.selectedViewController.navigationController == nil ?
-
谢谢。该死的,是的,刚刚测试过,实际上是零。难怪为什么它不起作用。但为什么它是零,我从这里去哪里?
-
[self.window.rootViewController presentModalViewController:navigationController animated:YES];
-
确实有效。但是我在顶部有一个导航栏,但视图(屏幕的其余部分)是黑色的......
-
[self.window.rootViewController presentModalViewController:controller animated:YES];
标签: ios xcode storyboard