2010-01-04 14 views
10

He estado buscando pero desafortunadamente no he tenido suerte.presentModalViewController en viewDidLoad en el primer lanzamiento

Mi aplicación requiere que el usuario inicie sesión o se registre la primera vez que inicia la aplicación. Sé cómo determinar el primer lanzamiento (utilizando NSUserDefaults) pero cada vez que intento presentar el modal que contiene los controles de inicio de sesión/registro, no pasa nada.

Esto es lo que tengo:

-(void)viewDidLoad { 
    [self showLogin]; 
    [super viewDidLoad]; 
} 

-(void)showLogin {  
    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"AccountView" bundle:nil]; 
    controller.delegate = self; 

    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:controller animated:YES]; 

    [controller release]; 
} 

Sin embargo, no sucede nada. La vista principal solo se carga de forma normal. Cualquier ayuda es muy apreciada.

-Giles

Respuesta

13

[ACTUALIZACIÓN]

fija simplemente mediante el uso ..

-(void)viewDidAppear:(BOOL)animated 
{ 

} 

en lugar de

-(void)viewDidLoad 
{ 

} 

¡Gracias de todos modos!

/idiotez

+5

pero creará un problema, llame cada vez que su correo aparezca ... ¡¡!?! –

7

que tenían el mismo problema y terminó usando viewDidAppear también. El único problema con el enfoque viewDidAppear es que si carga otros UIViewControllers en la parte superior, luego vuelve a mostrar la base, entonces se llama al código de configuración una y otra vez. Terminé teniendo que agregar un valor booleano (inicializado a SÍ) a este controlador de vista y verificar ese valor antes de decidir qué hacer. Espero que esto ayude a alguien ...

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:(BOOL)animated]; 

    if(justLaunched) 
    { 
     justLaunched = NO; 
     if(settingsFileExists) 
     { 
      [self displayMainView]; 
     } 
     else 
     { 
      [self displaySetupView]; 
     } 
    } 
} 
0

e invocando esto en el viewDidLoad no es muy seguro: la secuencia viewDidLoad/viewDidUnload puede ocurrir en tiempo de ejecución cuando el iPhone necesita liberar algunos puntos de vista con el fin de recuperar parte libre memoria.

El efecto secundario de dicha secuencia sería que se mostraría su controlador de acceso ...

Como ha dicho el viewDidAppear se ve mejor, pero no simplemente lo puso al final de la appDidFinishedLaunching el delegado de su UIApplication?

2

¿Qué le parece usar performSelector: withObject: afterDelay en la función viewDidLoad? Así es como lo hago, con un breve retraso de 0.1 s.

Cuestiones relacionadas