1

我有一个 MKMapView,我向它添加了一些注释。我想在添加一段时间后一一删除注释。我需要每个注释都有自己的生命周期。是否可以?我应该如何做到这一点?

4

2 回答 2

0

您最好的选择是使用-(void)removeAnnotations:(NSArray *)annotations您的MKMapView.

只需将您的注释保存在某处,例如带有 {date : annotationObject} 的 NSDictionary,并在您想要删除时检索它。

例如:

//Call somewhere to delete after 2 seconds
[self performSelector:@selector(deleteAnnotation:) withObject:annotation afterDelay:2.f]

//this function will remove the annotation from your map
-(void) deleteAnnotation:(id) object{
    [self.map removeAnnotations:@[object]];
}
于 2015-08-21T08:45:49.313 回答
0

MKMapView 具有删除已添加注释的方法removeAnnotationremoveAnnotations

如果您希望每个注释都有自己的生命周期:

  • AnnotationLifespanDelegate使用以注释作为参数(例如func dearAnnotationRIP(annotation : MKAnnotation))的指示生命周期结束的方法创建协议。

  • lifespan使用andlifeSpanDelegate属性和方法创建自定义 MKAnnotation startCountdown

  • startCountdown方法只是启动一个间隔等于 的计时器,lifespan并在委托上调用生命周期结束方法。

  • 在视图控制器中实现AnnotationLifespanDelegate方法并在创建注解对象时,确保在将注解添加到地图视图后立即设置和调用注解上lifespandelegate方法。startCountdown

  • 在注解生命周期结束方法中,从地图中移除注解。

于 2015-08-21T08:54:32.547 回答