Question

J'essaie d'expliquer mon problème.Dans l'Appdelegate, je dois sélectionner une brasseuse racine en fonction du résultat d'une demande asynchrone (j'utilise l'Afnetworking Cadre).En fait, j'ai besoin de savoir si mon utilisateur est profilé ou non: s'il est profilé, je peux lui montrer la maison de l'application, s'il ne l'est pas, je dois lui montrer une vue de profilation.

Dans Storyboard, j'ai défini la vue à la maison comme point d'entrée désigné, mais cette vue est toujours affichée jusqu'à ce que la demande asynchrone soit terminée.Y a-t-il un moyen de faire attendre l'Appdelegate pour la réponse?

Était-ce utile?

La solution

Je pense qu'il n'y a pas de bonne solution pour laisser l'application déléguée attendre la réponse car si la connexion réseau sera médiocre, le temps de chargement de l'application sera très long et que le système d'exploitation pourrait tuer votre application ou l'utilisateur peut l'éteindre.

Vous pouvez ajouter un certain contrôleur de vue de chargement (avec l'animation afin que l'utilisateur sache que l'application fait quelque chose) au lieu de la maison une et lorsque vous recevez la réponse actuelle de la vue appropriée à l'utilisateur (la Segue modale pourrait faire le travail). J'espère que cette aide

Autres conseils

Une meilleure solution consiste à utiliser des écrans Splash.C'est à ce moment-là que votre application est chargée dans AppDelegate, créez et appuyez sur un contrôleur de vue de Splash.Ce qui serait simplement contenir un seul écran de couverture UIImageView sur l'image de votre application Splash.Lors de l'achèvement des appels asynchrones, évitez le contrôleur d'affichage des éclaboussures et appuyez sur votre contrôleur d'affichage requis.

De nombreuses applications utilisent cette façon de télécharger les données asynchrones nécessaires avant de montrer l'application.De sorte que l'utilisateur ne voie pas des écrans vides ni des données de déchets.

Si quelque chose est échoué comme une défaillance de la connectivité Internet ou une erreur de réponse du serveur, etc., affichez une erreur à l'utilisateur et effectuez la manipulation des erreurs en fonction de votre logique d'application.

Vous pouvez naviguer de manière programmative sur le contrôleur de vue racine comme

[self.navigationController popToRootViewControllerAnimated:YES];

Ce code peut être mis à l'état du résultat.

ou sur votre chemin, je pense que vous êtes créé une SEGUE pour la navigation dans la racine racine.Vous pouvez effectuer de manière programmative une SEGUE en utilisant

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

Si vous utilisez l'Afnetworking, ajoutez simplement une méthode dans le bloc de réussite et passez la réponse à cette méthode dans un paramètre du dictionnaire.Vérifiez votre réponse dans la méthode et choisissez le contrôleur que vous souhaitez faire effectuer le contrôleur de vue racine de cette méthode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top