Je travaille sur une application dans laquelle un UIALert apparaît la première fois que l'utilisateur commence à l'utiliser pour demander s'il veut utiliser leur position actuelle. Cela se produit dans le contrôleur principal. Cependant, j'obtiens l'erreur suivante lors de l'utilisation de l'UIALERT:
@interface MainController : UIViewController <CLLocationManagerDelegate, MKReverseGeocoderDelegate, UIAlertViewDelegate>
5 Réponses :
Essayez d'afficher l'UIALERT dans -ViewDidIDAppear: (bool) animé. -ViewDidLoadLoad est appelé lorsque votre vue est chargée, mais avant qu'il ne soit à l'écran. p>
Alan, j'ai essayé ceci..oulé le code à la fonction ViewDidAppear et reçois toujours le même message d'erreur.
Je pense que cette erreur se produit car vous montrez l'UIALERTVIEW avant que les animations de navigation ne soient effectuées. Appelez-vous [Super ViewDididAppear: Animated] en premier?
J'ai résolu ce problème en ajoutant un léger délai à l'UIALERT: le ci-dessous se trouve dans ma méthode Pour une raison quelconque, le retard a fait l'affaire. J'ai ensuite appelé une autre méthode (je le renommerai bien sûr.): P>
Appelez toujours J'espère que j'ai raison. :) p> [super viewDidLoad]; code> avant de faire autre chose. Cela explique également pourquoi le retard fonctionne. p>
La raison de ce Expédition au thread de l'interface graphique aide: P> wait_fences: Impossible de recevoir la réponse: code> peut également être que vous essayez d'afficher une alerte sans être sur le maintenir code> (qui est le fil de l'interface graphique ). dispatch_async(dispatch_get_main_queue(), ^{
[mainAlert show];
});
Comment trouvez-vous qu'il n'est pas sur le fil principal? ViewDidLoad est toujours appelé sur le fil principal.
J'ai eu un problème similaire. J'avais ajouté un observateur dans la vue ViewDidLoad pour une notification d'accessibilité, qui devait être affichée avant la fin de la vieilledididappear. p>
de sorte que la vue de la vue tentative d'afficher une uialertview avant sa propre vue ait été complètement dessinée. em> p>
J'ai déplacé l'ajout d'observateurs à la vue ViewDidAppear et a commencé le startnotifier de la portée accessible dans la vue ViewDidAppear. De plus, l'appel à [Super ViewDididappear] a été manqué du code. Ces deux problèmes sont corrigés, l'application est devenue bien fonctionner. p>
Si vous obtenez ce wait_fences: Échec de la réception de la réponse: 10004003 Erreur Une fois, vous ne pourrez peut-être présenter aucune vue modale dans l'application. C'était le problème que j'avais dans mon application. Parfois, lorsque vous essayez de présenter une vue de mode modale, l'application irait dans une boucle infinie. P>
Comme Alan dit, rappelez-vous toujours de "essayer d'afficher l'UIALERT dans -ViewDidAppappear: (bool) animée. -ViewDidLoDload est appelé lorsque votre vue est chargée, mais avant qu'il ne soit à l'écran." P>