如何使用已经呈现的模式视图控制器启动 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