显示ipad应用程序启动时的模式视图
问题描述:
我想在启动ipad应用程序时有条件地显示登录屏幕。我不想让它成为默认的segue的一部分,因为他们只需要定期登录,而不是每次登录。显示ipad应用程序启动时的模式视图
有我的问题numerousexamples,但他们似乎都早于ios5。然而,当我使用故事板时,似乎没有任何工作。
为了减少这种以它的本质, *创建一个新的单一视图的应用程序,用故事板 *添加一个新的视图控制器到故事板,给它的“loginScreen” *标识符把文本标签上的每个视图直观地区分它们。 *中的appDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIStoryboard *storyboard = [self.window.rootViewController storyboard];
UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"];
[self.window.rootViewController presentModalViewController:loginController animated:TRUE];
return YES;
}
从我所看到的例子,应该工作。但它始终显示原始的rootViewController视图。虽然没有错误。
任何人都可以指出我错过的(可能很小)的东西吗?
答
事实证明,该应用程序在didFinishLaunching
方法中未处于活动状态。
适当地方放这是
- (void)applicationDidBecomeActive:(UIApplication *)application
{
UIStoryboard *storyboard = self.window.rootViewController.storyboard;
UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"];
[self.window.rootViewController presentModalViewController:loginController animated:NO];
}
答
@deafgreatdane:您的解决方案将每一个应用程序成为从在后台状态(其可以是所期望的)活动时间呈现所述视图控制器模态。
在我的情况(使用它来显示一个一次性的启动屏幕)我想补充一个dispatch_once
于该解决方案,以确保该模式启动屏幕只显示一次:
- (void)applicationDidBecomeActive:(UIApplication*)application
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^
{
SomeLaunchViewController* launchViewController = [[SomeLaunchViewController alloc] init];
[self.window.rootViewController presentViewController:launchViewController animated:NO completion:NULL];
});
}
这代码片段使用ARC。