Question

J'ai un MKMapView, je suis en ajoutant un seul MKPlacemark pour représenter l'emplacement d'un bâtiment, l'utilisateur a sélectionné.L'utilisateur ne peut sélectionner qu'un seul bâtiment à la fois, et je veux simplement déplacer le repère pour le nouveau bâtiment lorsqu'ils sélectionnent un nouveau bâtiment.Sur le premier bâtiment qu'ils sélectionnent, il fonctionne très bien et les lieux d'un pin sur la carte.Lorsque j'essaie de l'appeler setCoordinate sur le repère de mise à jour de la position du marqueur lorsqu'ils sélectionnent un nouveau bâtiment bien, je reçois -[MKPlacemark setCoordinate:]: unrecognized selector sent to instance

Dans MyViewController.h j'ai:

@property (nonatomic, strong)MKPlacemark *selectedBuildingPlacemark;

Dans MyViewController.m

@synthesize selectedBuildingPlacemark;

...

if (self.selectedBuildingPlacemark == nil) {
        self.selectedBuildingPlacemark = [[MKPlacemark alloc] initWithCoordinate:myCoord addressDictionary:nil];
        [mapView addAnnotation:self.selectedBuildingPlacemark];
    }
    else {
        [self.selectedBuildingPlacemark setCoordinate:myCoord];
    }

J'ai pensé MKPlacemark conforme à MKAnnotation et doit donc mettre en œuvre setCoordinate.Quelqu'un peut-il me montrer l'erreur de mes moyens?

Était-ce utile?

La solution

La documentation de MKAnnotation dit:

Les Annotations qui prennent en charge les faisant glisser devraient mettre en œuvre cette méthode pour mettre à jour la position de l'annotation.

Donc, la méthode setCoordinate: est facultative et n'est mise en œuvre par les classes qui prennent en charge les faisant glisser.La documentation de MKPlacemark ne fait pas référence à cette méthode, donc il n'est pas mis en œuvre.

Donc, vous devriez créer une nouvelle instance à chaque fois que vous sélectionnez un nouveau bâtiment.

Autres conseils

Si vous n'avez pas spécialement besoin d'utiliser un MKPlacemark (il ne ressemble pas à elle parce que vous êtes de passage à néant pour le addressDictionary), vous pouvez utiliser le MKPointAnnotation classe à la place.

MKPointAnnotation met en œuvre MKAnnotation mais ajoute une setCoordinate la méthode.

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