【问题标题】:MKMapView add annotation and remove it after some timeMKMapView 添加注释并在一段时间后将其删除
【发布时间】:2015-08-21 08:31:23
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c mkmapview mkpointannotation


    【解决方案1】:

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

    只需将您的注释保存在某处,例如带有 {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]];
    }
    

    【讨论】:

      【解决方案2】:

      MKMapView 有 removeAnnotationremoveAnnotations 方法,可以删除已添加的注释。

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

      • 创建AnnotationLifespanDelegate协议,其中包含以注解为参数的生命周期指示方法(例如func dearAnnotationRIP(annotation : MKAnnotation))。

      • 使用lifespanlifeSpanDelegate 属性和startCountdown 方法创建自定义MKAnnotation。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        • 2011-11-06
        • 1970-01-01
        相关资源
        最近更新 更多