2010-01-15 4 views
0

J'ai un MKMapView à l'intérieur d'un UITableView comme une cellule personnalisée (ne demandez pas;) - ne sais pas si cela compte vraiment), pour lequel j'inscris une méthode de délégué regionDidChangeAnimated. Cette méthode est appelée trois fois lorsque UITableView est chargé - une fois avec la région actuelle et deux fois de plus avec une région éloignée. Dans le simulateur, j'ai toujours une région avec le centre (+37.43997405, -97.03125000). Sur le périphérique, il semble dépendre de l'emplacement signalé par le gestionnaire de localisation, qui initialise la vue de la carte. Pourquoi ai-je trois appels regionDidChangeAnimated? Et pourquoi le centre se coordonne-t-il pour les deux derniers?multiple regionDidChangeAnimated calls - que donne-t-on?

Voici le code que j'utilise pour obtenir les coordonnées du centre:

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { 
    CLLocation *l = [[CLLocation alloc] initWithLatitude:self.mapView.centerCoordinate.latitude longitude:self.mapView.centerCoordinate.longitude]; 
(....) 

Répondre

1

J'ai mis en place une vue sur la carte dans une vue de table personnalisée cellule et a ajouté que la cellule à une vue de table (bien qu'il devrait certainement pas importe où/comment l'affichage de la carte est affiché).

Je ne vois aucun appel inattendu à la méthode déléguée regionDidChangeAnimated:.

Je vois appels à cette méthode que lorsque:

  1. L'utilisateur modifie la position/zoom de la carte ou
  2. Certains code change du centre/span de la carte

Êtes-vous sûr de voir des appels inattendus? Vous n'utilisez pas de code pour configurer la région (centre/étendue) de la carte?

+0

Vous avez raison - peu importe où est la vue de la carte, mais comme je n'arrive pas à identifier la source de la région, je pense que je pourrais fournir un peu de contexte. J'ai fait plus de débogage et augmenterai la description du problème avec mes résultats. – mvexel