我有一个MKMapView,我添加了一些注释。我想在添加一段时间之后逐个删除注释。我需要每个注释都有自己的生命周期。可能吗?我该怎么做?
答案 0 :(得分: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]];
}
答案 1 :(得分:0)
MKMapView使用removeAnnotation
和removeAnnotations
方法删除已添加的注释。
如果您希望每个注释都有自己的生命周期:
使用指示生命结束的方法创建AnnotationLifespanDelegate
协议,该方法将注释作为参数(例如func dearAnnotationRIP(annotation : MKAnnotation)
)。
使用lifespan
和lifeSpanDelegate
属性以及startCountdown
方法创建自定义MKAnnotation。
startCountdown
方法只是启动一个间隔等于lifespan
的计时器,并在委托上调用生命结束方法。
在视图控制器中实现AnnotationLifespanDelegate
方法,在创建注释对象时,请确保设置lifespan
和delegate
并调用startCountdown
方法将注释添加到地图视图后立即注释。
在注释寿命结束方法中,从地图中删除注释。