2011-08-31 4 views
1

Je suis nouveau dans l'iPhone SDK dev, et je ne suis pas un Englishman, donc mes excuses pour mon niveau.EXC_BAD_ACCESS dismissModalViewControllerAnimated

Voici mon problème: je ai un tabBarcontroller, avec 3 point, chacun a un navBarcontroller

[self.loginViewController release]; 
[self setLoginViewController:[[LoginViewController alloc] init]]; 
[[self loginViewController] setDelegate:self]; 
[[self loginViewController] isLoggued]; 

self.tabBarController = [[UITabBarController alloc] init]; 

_FirstViewController = [[[FirstViewController alloc] init] autorelease]; 
_FirstViewController.title = @"title 1"; 

UINavigationController* navController1 = [[[UINavigationController alloc] 
              initWithRootViewController:_FirstViewController] autorelease]; 

_SecondViewController = [[[SecondViewController alloc] init] autorelease]; 
_SecondViewController.title = @"title 2"; 

UINavigationController* navController2 = [[[UINavigationController alloc] 
              initWithRootViewController:_SecondViewController] autorelease]; 

_ThirdViewController = [[[_ThirdViewController alloc] init] autorelease]; 
_ThirdViewController.title = @"title 3"; 

UINavigationController* navController3 = [[[UINavigationController alloc] 
              initWithRootViewController:_ThirdViewController] autorelease]; 

self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController1, navController2, navController3, nil]; 
[self.window addSubview:self.tabBarController.view]; 
// adds the tab bar's view property to the window 
[self.window makeKeyAndVisible]; 

[self.tabBarController release]; 

if ([self respondsToSelector:@selector(loginViewControllerLogout:)]) { 
    [self performSelector:@selector(loginViewControllerLogout:) withObject:[self loginViewController]]; 
} 

return YES; 

Ici c'est le sélecteur

-(void)loginViewControllerLogout:(LoginViewController *)loginViewController { 

if (![self.loginViewController logguedIn]) 
    [self.tabBarController presentModalViewController:self.loginViewController animated:YES]; 
} 

Et quand je suis loggué, J'appelle:

-(void)loginViewControllerDidFinish:(LoginViewController *)loginViewController { 
    [self.loginViewController dismissModalViewControllerAnimated:YES]; 
} 

Ce morceau de code fonctionne lorsque l'application est lancée pour les sapins t temps. LoginViewController affiché> connexion réussie> LoginViewcontroller ignorer> Affichage de FirstViewController. Mais si je vais à la thirdViewController, cliquez sur fermeture de session: sélecteur LoginViewControllerLogout appelé> LoginViewController affiché> Connexion Successfull> Accident dans le dismissModal.

Il n'y a pas d'erreur pile, juste l'erreur EXC_BAD_ACCESS. Il y a plus de 1 retenir pour loginViewController.

Merci à l'avance

EDIT: toutes les fonctions sont dans le AppDelegate

Répondre

0

au lieu de

[self.tabBarController presentModalViewController:self.loginViewController animated:YES]; 

essayer

[self presentModalViewController:self.loginViewController animated:YES]; 

cela devrait fonctionner comme vous présentez modal votre fenêtre et non votre tabbar ..

ou

[self presentModalViewController:loginViewController animated:YES]; 
+0

Comme je l'ai dit le projet de loi, je ne peux pas faire cette auto coz est mon AppDelegate *, donc il n'y a pas de « self.view » ... Merci pour votre réponse – Boubou95

+0

Mais vous n'appeler la rejeter dans la présente vue, qui ne serait pas votre AppDelegate. Appelez ceci ici plutôt que de rappeler votre AppDelegate pour le faire. –

+0

Même chose exc_bad_access. Dans mon AddDelegate, j'appelle une fonction dans le loginViewController avec: [self dismissModalViewControllerAnimated: YES]. – Boubou95

0

Le EXC_BAD_ACCESS signifie que vous essayez d'accéder à quelque chose qui a été publié déjà. Je pense que vous n'avez pas besoin de rappeler votre loginViewController pour simplement ignorer la vue modale. Lâchez simplement la vue actuelle et votre autre vue devrait vous attendre.

[self.view dismissModalViewControllerAnimated:YES]; 
+0

Je ne peux pas faire cette auto coz est mon _AppDelegate * _, donc il n'y a pas de « self.view », merci pour votre réponse – Boubou95

+0

je pense que UIView ne répond pas à 'dismissModalViewControllerAnimated: YES' –

Questions connexes