2015-08-21 2 views
1

У меня есть MKMapView, и я добавляю к нему некоторые аннотации. Я хочу удалить аннотации один за другим через некоторое время, когда он был добавлен. Мне нужно, чтобы у каждой аннотации была своя продолжительность жизни. Является ли это возможным? Как мне это достичь?MKMapView добавить аннотацию и удалить ее через некоторое время

ответ

0

Ваш лучший выбор - использовать -(void)removeAnnotations:(NSArray *)annotations от вашего MKMapView.

Просто сохраните свою аннотацию где-нибудь, например NSDictionary с {date: annotationObject}, и извлеките ее, когда хотите удалить.

Например:

//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]]; 
} 
0

MKMapView имеет removeAnnotation и removeAnnotations методы, которые удаляют уже добавлены аннотации.

Если вы хотите, чтобы каждый аннотацию иметь свой собственный срок службы:

  • Создать AnnotationLifespanDelegate протокол с методом для индикации конца жизни, которая принимает аннотацию в качестве параметра (например func dearAnnotationRIP(annotation : MKAnnotation)).

  • Создайте пользовательскую MKAnnotation с объектами lifespan и и способом startCountdown.

  • startCountdown метод просто запускает таймер с интервалом, равным lifespan, и называет делегат методом конца жизни.

  • Реализовать AnnotationLifespanDelegate метод представления контроллера и при создании объектов аннотаций, убедитесь, что вы установите lifespan и delegate и вызвать startCountdown метод на аннотации сразу после добавления его в виде карты.

  • В методе конца аннотации жизни удалите аннотацию с карты.

Смежные вопросы