如何使用已经呈现的模式视图控制器启动 iOS 应用程序,而用户无法看到呈现视图?

Posted

技术标签:

【中文标题】如何使用已经呈现的模式视图控制器启动 iOS 应用程序,而用户无法看到呈现视图?【英文标题】:How to start an iOS app with a modal view controller already presented without the user being able to see the presenting view? 【发布时间】:2013-10-29 02:19:33 【问题描述】:

我已经尝试了许多组合,从应用程序委托、呈现视图控制器的viewDidLoad 执行此操作,有延迟和无延迟,有和没有动画。

但是要么用户可以暂时看到呈现的视图控制器,要么没有呈现模态框。

如何做到这一点?

【问题讨论】:

【参考方案1】:

使用故事板尝试以下代码,应用以模式视图控制器开始:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    [self.window makeKeyAndVisible];
    [self.window.rootViewController performSegueWithIdentifier:@"modalSegue" sender:self];

    return YES;

从启动视图控制器到模态视图控制器的 Segue 配置:

【讨论】:

这里没有显示模态。但也许是因为我正在使用故事板?我将如何使用情节提要? UPD:故事板的更新答案 ios 7、iOS 6 模拟器和 iOS 7 设备上进行了测试。谢谢! 我现在看到了我之前的尝试中缺少的东西。 [self.window makeKeyAndVisible]。如果我删除此行,它将不起作用。是时候阅读了……再次感谢。 当您尝试在没有此行的情况下呈现模态视图时出现警告 - Warning: Attempt to present <UIViewController: 0xa37d320> on <UIViewController: 0xa37d0a0> whose view is not in the window hierarchy!。在您调用[self.window makeKeyAndVisible] 之后,self.window.rootViewController.view 被添加到窗口层次结构中,并且模态 vc 正在呈现而没有警告。【参考方案2】:

如果您的 inititalViewController 上有一张启动图像的图片会怎样。

@property (nonatomic, weak) IBOutlet UIImageView *launchImage;

在视图出现之前设置启动图像。

- (void)viewWillAppear

    self.launchImage.image = [self launchImage];

Here's a link to get the launch image.

然后,当您呈现模态视图控制器时,删除启动图像。

[self presentViewController:vc animated:NO completion:^
    [self.launchImage removeFromSuperview];
];

【讨论】:

聪明的答案:)。我没有尝试过,但听起来不错。

以上是关于如何使用已经呈现的模式视图控制器启动 iOS 应用程序,而用户无法看到呈现视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的标签栏 iOS 应用程序上呈现模式 UINavigation 视图?

iOS - 如果应用程序首次启动 - 呈现 ModalView

iOS在启动时呈现模态视图控制器而不使用flash

iOS 7 - 呈现模式视图控制器选择 UITabBarController 中的第一个选项卡

横向 IOS 应用程序在呈现模态视图控制器时抛出异常

在 IOS 6 中使用情节提要以横向模式呈现 modalViewController