2010-11-18 4 views
0

J'ai 3 contrôleurs de vue dans mon UINavigationController. Si j'utilise pushViewController et popViewController pour basculer entre les contrôleurs de vue, tout va bien. Mais si j'appelle setViewControllers afin de réorganiser leur commande, j'obtiens un plantage lorsque je touche le bouton de la barre de navigation arrière.provoque un crash d'exécution!

[UIBarButtonItem performSelector: withObject: withObject]: message vers l'instance désallouée.

La pile d'origine est A et B, et ensuite j'ai mis A et C comme ci-dessous.

[delegate.navigationController setViewControllers: [NSArray arrayWithObjects: [[délégué.navigationController viewControllers] objetAtIndex: 0], controllerC, nil] animé: YES]; Ce que j'ai trouvé étrange est ..., si j'appelle cette méthode avec animation: NON, crash ne se produit pas.

Quel est le secret du paramètre animé pour mon code? aidez-moi s'il vous plaît ... :(

Répondre

1

Le fait que cela se produise seulement avec des animés: OUI me fait penser que c'est une condition de course auto-assignée. Allouez-vous votre instance controllerC avec autorelease? Si oui, essayez d'éviter cela et de libérer explicitement après l'appel à setViewControllers au lieu. Laissez-moi savoir si cela résout votre problème.

ne peut prétendre que je comprends très bien ce qui se passe ici, mais donner un coup de feu.

S

0

j'avais ce même problème, et il me semblait que c'était un bogue iOS. nouveau contrôleur de vue:

[navigationController pushViewController:controllerC animated:YES]; 

Réglez ensuite la pile de contrôleurs de vue à la valeur appropriée (pour éliminer ceux entre les deux):

NSArray *newViewControllers = [NSArray arrayWithObjects:controllerA, controllerC, nil]; 
[navigationController setViewControllers:newViewControllers animated:NO]; 
peu étrange ...
+0

, il cache leftBarButton sur le contrôleur de navigation . Juste disparaître mais je peux le toucher. Quoi qu'il en soit, pas de crash. Que diable avec ce SDK? –

+0

Avez-vous trouvé une solution? Si oui, partagez s'il vous plaît. Je suis confronté à un problème similaire. Le leftbarButton disparaît mais peut être touché. – Pria