2010-02-08 5 views
2

Dans mon application iPhone, j'ai deux contrôleurs de vue que je souhaite présenter de manière modale. Il y a un contrôleur racine qui présente le premier (disons A), et A présente le second (disons B). Ensuite, je veux rejeter à la fois A et B à la fois, ce que je fais en appelant la méthode dismiss… à partir du contrôleur racine. La documentation indique que dans ce cas la pile entière de contrôleurs est rejetée, A et B. Les deux contrôleurs disparaissent vraiment de l'écran, mais quand j'inspecte A, sa propriété modalViewController est encore définie et quand j'essaye plus tard de présenter B de A, rien ne se passe. J'ai résolu cette situation en appelant dismissModalViewControllerAnimated:NO sur A avant de présenter A à l'écran, mais c'est un hack, pas une vraie solution. Qu'est-ce qui se passe, qu'est-ce que je fais mal?Rejet de plusieurs contrôleurs modaux

Répondre

1

Hmm. Je n'ai eu aucun problème dans cette situation.

Je l'ai implémenté avec un délégué et un protocole, juste une méthode dismissMe: dans le parent qui a géré le rejet, et une variable dans l'enfant pour pointer vers le parent. Lorsque root a mis en place A, il a dit à A que sa racine était son délégué; idem quand A a mis en place B.

Quand B a été fait, il a envoyé [delegate dismissMe: self]. Le licenciement d'A: rejeté B à l'unanimité, puis envoyé [délégué congédié: soi-même]. Le rejet de RootMe: alors rejeté A unanimisé. L'effet visible était que B cédait droit à la racine.

Je peux extraire la source de mon repo git si demandé. Je suis allé à un régime différent lorsque le flux de travail de cette application est devenu plus complexe.

+0

En demandant que vous trouviez cette source, j'ai aussi des problèmes avec ça. –

Questions connexes