使用故事板从应用程序委托呈现模态视图控制器

Posted

技术标签:

【中文标题】使用故事板从应用程序委托呈现模态视图控制器【英文标题】:presenting modal view controller from app delegate with storyboards 【发布时间】:2012-03-13 14:18:29 【问题描述】:

如果我对我的 ios 项目中的一件事感到遗憾,那就是我从一开始就开始使用故事板。现在我很难找到合适的参考资料。

在这种特殊情况下,我只想在应用程序从 AppDelegate 完成启动后立即显示模态视图控制器。很简单,但我现在无法完成:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
    AppStartViewController *appStartViewController = [[AppStartViewController alloc] init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:appStartViewController];
    [navController setModalPresentationStyle:UIModalPresentationFullScreen];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MyInitialViewController"];
    [vc presentModalViewController:navController animated:NO];

    // Override point for customization after application launch.
    return YES;

任何想法出了什么问题或我的想法错误在哪里?

【问题讨论】:

【参考方案1】:

我认为你还没有看到 vc。您首先需要展示 vc 视图控制器。

self.window.rootViewController = vc;

[self.window makeKeyAndVisible];

模态视图控制器只能由另一个已经在视图上的视图控制器呈现。

【讨论】:

我认为它在视图中 - vc 是使用故事板中的视图控制器实例化的,标识符为“MyInitialViewController”。至少那是我的猜测。像您建议的那样更改代码只会导致初始视图控制器显示为模型视图控制器

以上是关于使用故事板从应用程序委托呈现模态视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

从应用程序委托中呈现故事板视图控制器?

应用程序试图在目标上呈现一个 nil 模态视图控制器

如何使用没有选项卡或导航控制器的故事板从 AppDelegate 实例化不同的视图?

呈现模态视图控制器的延迟

如何从 appdelegate 呈现和关闭模态视图?

从应用程序委托不平衡调用开始/结束外观呈现模态视图