6

Quiero mostrar condicionalmente una pantalla de inicio de sesión al iniciar una aplicación ipad. No quiero hacer que forme parte de un segue predeterminado, ya que solo necesitan iniciar sesión periódicamente, no siempre.muestra una vista modal en el inicio de la aplicación ipad

Hay numerousexamples de mi pregunta, pero todas parecen ser anteriores a ios5. Cuando uso storyboards, sin embargo, nada parece funcionar.

reducirlo a su esencia, * Crear una nueva aplicación de vista individual, utilizando guión gráfico * añadir un nuevo viewcontroller al guión gráfico, darle un identificador de "loginScreen" * poner una etiqueta de texto en cada vista a visualmente distinguirlos. * en el 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; 
} 

Por lo que he visto de los ejemplos, que debería funcionar. Pero todavía muestra de forma consistente la vista original de rootViewController. Sin errores.

¿Alguien puede señalar la cosa (probablemente pequeña) que me falta?

Respuesta

2

Resulta que la aplicación no está activa en el método didFinishLaunching.

el lugar adecuado para poner esto es

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    UIStoryboard *storyboard = self.window.rootViewController.storyboard; 
    UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"]; 
    [self.window.rootViewController presentModalViewController:loginController animated:NO]; 
} 
2

@deafgreatdane: Su solución presentaría el controlador de vista modal cada vez que la aplicación se activa de estar en un estado de fondo (que puede ser deseable).

En mi caso (usando esto para mostrar una sola vez pantalla de inicio) Me gustaría añadir un dispatch_once a esa solución para asegurarse de que la pantalla de inicio modal sólo se mostrará una vez:

- (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]; 
       }); 
} 

Este fragmento de código utiliza ARC.

Cuestiones relacionadas