La détermination d'une position prend du temps. Quand et où le gestionnaire de localisation doit-il être démarré?Quand/où démarrer startUpdatingLocation?
Maintenant, je commence la mise à jour de l'emplacement une vue avant que la vue de résultat (qui a besoin de l'emplacement) est chargée. Si l'utilisateur appuie sur je reçois rapidement 0.0 coordonnées.
Pour obtenir le bon timing, le startUpdatingLocation
doit être appelé trois vues avant la vue des résultats. Le problème ici est que je devrais passer la valeur à travers ces trois contrôleurs de vue. La chose suivante est que j'ai besoin de l'emplacement également dans une autre vue (pas les vues mentionnées ci-dessus). Je pensais que je vais créer une classe d'écoute d'emplacement propre. Mais quand cette classe sera-t-elle instanciée et les coordonnées (longitude, latitude) passées? Un protocole ne m'aide pas, car seule la classe qui a créé mon écouteur d'emplacement récupérera les résultats.
Je lis un peu et trouver les solutions possibles suivantes:
1) Utilisation du Centre de notification (voir this solution)
2) créer une propriété de mon manager emplacement dans le AppDelegate
À 1) J'aurais le problème que la vue, qui a besoin des résultats n'aurait pas été créée auparavant.
À quoi ressemblerait l'implémentation de 2)? Je crée une instance du gestionnaire d'emplacement dans le délégué de l'application et puis j'accède à certains ivars comme la latitude/longitude du AppDelegate
? Si je prenais la solution décrite here je devrais implémenter le CLLocationManagerDelegate
chaque fois. Ne serait-il pas préférable d'avoir une classe pour le faire?
Peut-être avez-vous une troisième solution?
L'emplacement est déterminé au démarrage de l'application (dans 'AppDelegate'). J'ai créé un Singleton qui instancie 'CLLocationManager'. Maintenant, une seule instance du gestionnaire de position peut être créée et les données de localisation sont disponibles tout le temps. Quand? Au début de l'application. Où? Dans 'AppDelegate'. – testing
AppDelegate est également une classe singleton, personnellement, j'aime créer une classe singleton pour stocker les données de l'application. Je suis heureux d'avoir pu aider. – Jeroen
Qu'est-ce que DataController ici? – Mann