Salut tout le monde,
Dans le but d'une vérification de login et de d'acception de cgu, je voudrais utiliser les modalViewController pour gérer le login et les cgu.
Je pense que j'ai du mal comprendre quelque chose.
Voici le principe du bout de code.
1 = L'application charge avec MainViewController (mainVC)
2 = sur le viewDidAppear, mainVC teste le haveLogin et le haveCGU
3 = si le haveCGU est false, il push le CGUViewController (cguVC) et sette la haveCGU a YES
4 = un bouton permet le dismiss sur le cguVC (dismiss appeller sur self donc sur cguVC)
5 = Ici je me suis rendu compte que le dismiss retire bien le cgucontroller et rappelle le viewDidAppear de mainVC
6 = il rentre de nouveau dans le test, passe le premier concernant le haveCGU, et entre dans le deuxieme car haveLogin est toujours false
7 = il push le loginVC de la même manière que cguVC mais la il crash en Bus Error
C'est meme bizarre car on voit bien le loginVC apparaitre mais ça crash de suite.
Après de longue heure de test, je me suis rendu compte que si j'appellais la méthode de vérification des variables et de push des modals avec un décalage de 5 secondes il n'y avait pas de crash
J'en déduis que le crash doit venir du fait que je presentModalViewController alors que le précédent n'a peut etre pas terminé le dismiss ou quelque chose dans ce style... Est-ce bien sur le viewDidAppear, n'existe-t-il pas une notification ou autre qui me permettrait de refaire mes vérifications et pushé si nécessaire n'importe quel viewcontroller ?
Merci à tous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 -(void) mustValid { if (haveAcceptCGU) { if (!haveLogin) { if (loginVC == nil) loginVC = [[[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil] autorelease]; [self presentModalViewController:loginVC animated:YES]; haveLogin = YES; } }else { if (cguVC == nil) cguVC = [[[CguViewController alloc] initWithNibName:@"CguViewController" bundle:nil] autorelease]; [self presentModalViewController:cguVC animated:YES]; haveAcceptCGU =YES; } } - (void)viewDidAppear:(BOOL)animated { NSLog(@"Root viewDidAppear"); [super viewDidAppear:animated]; //[self performSelector:@selector(mustValid) withObject:nil afterDelay:3.0]; [self mustValid]; }
Partager