Je veux attendre jusqu'à ce que rejeter l'animation, mais je ne veux pas utiliser de nombreux blocs dans mon code, j'ai donc écrit cette fonction dans alors maintenant au lieu de: p> i était censé écrire: p> uiviewcontroller code>
extension code> (presque comme Cela a fonctionné il y a plusieurs années pour moi):
viewController.dismissAnimated()
// code after completion
3 Réponses :
Il ne renvoie pas parce que votre tandis que! Terminé code> La boucle a bloqué le fil principal et la mise à jour de l'interface utilisateur se produit sur le fil principal. Ce qui ne va pas avec le fonctionnement du code que vous devez exécuter à l'intérieur du
rejeter code> Fermeture d'achèvement?
En raison de l'amélioration de la décision d'archicicture, je ferais mieux d'utiliser le code sans bloc, la question est de savoir comment faire de cette décision de travailler. Et cela a fonctionné sur iOS 9 ou quelque chose comme celui-ci (peut être avec des changements de code, car je ne trouve pas mon code source). Je cours à la fois d'être runloop pour éviter de bloquer le fil principal. Par exemple, si je mets dans Dispatchque.Main.Asyncaster, cela fonctionnera, le problème est avec licenciement
S'il s'agit vraiment de ne pas utiliser de blocs peut-être que cela peut être une solution?
override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) if self.navigationController?.isBeingDismissed ?? self.isBeingDismissed { print("Dismissal completed...") } }
Non, j'ai besoin d'accomplir la tâche en utilisant Runloop car le code presque comme celui-ci a précédé
Effectivement trouvé une solution qui fonctionne. Voir nouvelle réponse.
J'ai essayé à nouveau parce que j'étais curieux et cette solution fonctionne réellement pour moi: iOS 12.1.2 | SWIFT 4.2 P> P>
Merci, cela fonctionne, il ne fonctionne réellement que lorsque je tapote, si j'appelle démissanimé () de DispatchQueue.Main, cela ne fonctionne pas (licenciement des travaux mais l'achèvement jamais appelé), mais je vais essayer de le comprendre), mais je vais essayer de le comprendre