MyAnnotation não implementa o protocolo MKAnnotation
-
19-09-2019 - |
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?
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