显示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。