Pregunta

Tengo una advertencia "MyAnnotation no implementa el protocolo MKAnnotation" cada vez que utilizo este:


[mapView addAnnotation:annotation];

or

[mapView removeAnnotation:mapView.annotations];

Alguien tiene una idea?

¿Fue útil?

Solución

(que se supone que es objeto de anotación una instancia de la clase MyAnnotation)

MKMapView requiere que sus objetos de anotación se ajustan a MKAnnotation protocolo para asegurar que implementan ciertos métodos necesarios - de lo contrario su aplicación puede producir errores en tiempo de ejecución. Este protocolo se define como sigue:

// 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

Esta es la clase de MyAnnotation deben definir y aplicar la propiedad coordinate y también puede poner en práctica métodos title 2 opcionales. Para permitir que el compilador sabe que su clase se ajusta realmente a un protocolo que debe declarar la clase de la siguiente manera:

@interface MyAnnotation: NSObject <MKAnnotation> // Or whatever parent class you have
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top