Je travaille sur un vieux code que je n'ai pas écrit, et il est vraiment pas bien architecturé ...Rejeter contrôleur de vue présenté, après que le contrôleur de vue présentatrice a été libéré
La situation est qu'un contrôleur de vue présente un contrôleur de vue personnalisé modalement, cependant toutes les 30 secondes, le contrôleur de vue de présentation est recréé.
Le problème ici est que si le modal est à l'écran lorsque cela se produit, alors tout effort pour le rejeter entraîne un comportement étrange (comme un écran blanc).
J'ai essayé d'appeler [self.presentedViewController dismissViewControllerAnimated];
sur le contrôleur nouvellement recréé, mais presentedViewController
est nul comme vous vous en doutez.
J'ai également essayé de garder une référence faible au contrôleur de vue modale, puis lorsque le VC présentateur est rechargé, en réglant cette valeur sur celle de l'ancien VC. Cela m'a permis d'appeler self.customModalVC dismissViewControllerAnimated];
mais cela provoque l'écran blanc mentionné ci-dessus, peut-être parce qu'il présente VC n'est plus dans la pile?
Toutes les suggestions ont été appréciées.
pourquoi est-il recréé toutes les 30 secondes? Cela me semble un peu étrange. Je vois aussi maintenant comment conserver cette présentation modale sans tenir de référence, ce qui serait probablement dû à des problèmes de mémoire, car il faudrait tenir une référence à viewController. Donc, votre meilleur pari ressemble à refactoriser/changer cela. – zero3nna
C'est en raison des appels réseau, je suis d'accord c'est une façon totalement stupide de le faire. Cela n'aurait pas été mon approche. On dirait que je n'ai pas vraiment beaucoup d'options autres qu'un refactor ... PM va adorer un billet de 4h allant à un billet haha en 3D. –
oui, cela ressemble à un billet amusant à faire. – zero3nna