Pergunta

Eu tenho um aviso "MyAnnotation não implementa o protocolo MKAnnotation" toda vez que eu use isto:


[mapView addAnnotation:annotation];

or

[mapView removeAnnotation:mapView.annotations];

Alguém tem uma idéia?

Foi útil?

Solução

(Assumindo que você anotação objeto é uma instância da classe MyAnnotation)

MKMapView exigem que seus objetos de anotação em conformidade com o protocolo MKAnnotation para garantir que eles implementar certos métodos necessários - caso contrário, sua aplicação pode produzir erros em tempo de execução. Este protocolo é definido como se segue:

// 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 é a sua classe MyAnnotation deve definir e implementar propriedade coordinate e também pode implementar 2 métodos title opcionais. Para permitir que o compilador sabe que a sua classe, na verdade, está em conformidade com um protocolo você deve declarar sua classe da seguinte forma:

@interface MyAnnotation: NSObject <MKAnnotation> // Or whatever parent class you have
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top