Question

J'ai un avertissement « MyAnnotation ne met pas en œuvre le protocole MKAnnotation » chaque fois que j'utilise ceci:


[mapView addAnnotation:annotation];

or

[mapView removeAnnotation:mapView.annotations];

Quelqu'un a une idée?

Était-ce utile?

La solution

(Supposé que vous objet d'annotation est une instance de classe MyAnnotation)

MKMapView exige que ses objets d'annotation sont conformes au protocole MKAnnotation pour qu'ils mettent en œuvre certaines méthodes nécessaires - sinon votre application peut générer des erreurs dans l'exécution. Ce protocole est défini comme suit:

// MKAnnotation.h
@protocol MKAnnotation <NSObject>

// Center latitude and longitude of the annotion view.
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

@optional

// Title and subtitle for use by selection UI.
- (NSString *)title;
- (NSString *)subtitle;

@end

C'est votre classe MyAnnotation doit définir et mettre en œuvre la propriété coordinate et peut également mettre en œuvre des méthodes 2 en option title. Pour laisser le compilateur savoir que votre classe est conforme effectivement à un protocole que vous devez déclarer votre classe de la façon suivante:

@interface MyAnnotation: NSObject <MKAnnotation> // Or whatever parent class you have
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top