J'essaie de fermer un Ceci est mon code:. P> UIViewController code> après un
UIAlertController code> a été montré
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
message:msg
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Accept"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
[self dismissViewControllerAnimated:YES completion:nil];
}];
[alertController addAction:okAction];
[self presentViewController:alertController animated:YES completion:^{}];
4 Réponses :
[SelfissViewControléranimated: Oui Achèvement: NIL] Code> fermera tous les contrôleurs de vue que la vue affichage actuellement em> (c'est-à-dire "(auto") affiche. Ce que vous voulez faire, c'est exécuter cette même méthode sur le contrôleur em> présage em> pour "Self". I.e.
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
Mais auto (l'actuel UIViewController) est la vue que je veux renvoyer. J'ai essayé d'ajouter .parentviewcontroller, ça ne fait aucune différence.
Oui, exactement. Vous voulez rejeter "Self". "Self.presentViewController" pourrait le faire. Mise à jour de la réponse.
Dans le débogueur, sont à la fois "Self.presentViewController" et "Self.ParentViewController" Nil?
Non, self.parentviewController code> est de type
xxxrootnavigationcontroller code>
Que diriez-vous de Self.PresententingViewController code>?
Self.PresentViewController code> est nul
Avez-vous vérifié sur quel fil le bloc est appelé? Si ce n'est pas le fil 1, il ne rejetera pas votre point de vue correctement, car la manipulation de l'utilisateur ne peut être effectuée que sur le fil un. Essayez de créer une méthode de licenciement, puis de l'appeler sur le thread principal:
Oui, essayé, ça n'a pas fonctionné. BTW, le sélecteur le plus court est PerformSelectorOnmainthread: withObject: WatintTone: code>
au cas où quelqu'un a eu le même problème. J'ai poussé le L'étrange chose est que uiviewcontroller code>, je ne l'ai pas présent avec
PresentViewController: animé: Achèvement: code>. C'est pourquoi
[autoavigationController PopViefControléranimated: oui]; code> strong> doit être utilisé à la place. p>
[auto démissionnantControléranaméranimated: oui achèvement: nil]; code> travaillé à l'extérieur du bloc et n'a pas à l'intérieur, je n'ai aucune explication pour cela ... P>
Il suffit d'utiliser [Super.navigationController PopViewControléranimated: Oui]; Code> P>
Oui ... c'est ce que j'ai écrit 4 mois plus tôt: D