2010-11-17 4 views
0

J'ai un code qui fonctionne bien sur mon iPod Touch fonctionnant sur iOS 4.0 ainsi que sur le simulateur fourni avec iOS SDK 4.1. Mais quand j'appelle [UIViewController dismissModalViewController:] sur un iPhone 2 sous iOS 3.1.2, il obtient une récursion infinie, finissant par s'écraser.iOS 3.1.2 [UIViewController dismissModalViewControllerAnimated:] crée une récursion infinie

J'ai un contrôleur de vue qui ouvre une vue de table où l'utilisateur sélectionne un document à ouvrir. Lors de la sélection d'un document, le délégué de mon contrôleur de table affiche les contrôleurs de vue parent, méthode dismissModalViewController. Je pense que c'est parce que je ferme le contrôleur de vue dont le code est en cours d'exécution qui provoque cela. La méthode dismissModalViewController est documentée pour être disponible dans iOS 2.0 et les versions ultérieures.

Comment fermer le UIViewController qui est ouvert à partir de son propre code?

+0

après un extrait de la pile d'appels de récurrence infinie – coneybeare

+0

coneybeare, je pensais que cela aiderait à appeler [NSObject performSelectorOnMainThread: withObject: waitUntilDone:] mais ce n'était pas le cas. –

+0

# 6662 \t 0x30bf8b18 en - [UIView (Hiérarchie) _makeSubtreePerformSelector: withObject: withObject: copySublayers:] # 6663 \t 0x30bf8b18 dans - [UIView (Hiérarchie) _makeSubtreePerformSelector: withObject: withObject: copySublayers:] # 6664 \t 0x30bf8bf0 en - [ UIView (Hiérarchie) _makeSubtreePerformSelector: withObject:] # 6665 \t 0x30bf8688 dans - [UIView (interne) _addSubview: positionné: relativeTo:] # 6666 \t 0x30c03868 en - [UIView (Hiérarchie) insertSubview: atIndex:] # 6667 \t 0x30ce076c in - [Transition UIWindowController: deViewController: toViewController: target: didEndSelector:] –

Répondre

0

J'ai pensé que mon problème pouvait être une corruption de tas à partir d'un code précédent. Un moyen de déboguer cela est de commenter des extraits de code précédent pour voir si le bug s'en irait ou reviendrait. Presque immédiatement, j'ai découvert que j'appelais dismissModalViewControllerAnimated: sur le contrôleur parent du contrôleur de vue actuel. Pourquoi cela fonctionne dans iOS 4.x Je n'ai aucune idée. Le problème auquel je suis confronté est que j'ai deux dialogues modaux que je dois fermer simultanément, ce que je n'arrive pas à faire fonctionner, mais c'est une question différente.

Questions connexes