Таймер в выноске mapViews

У меня есть карта с несколькими контактами (2 типа контактов). У них есть таймер в качестве субтитров (сколько времени прошло с тех пор). Проблема в том, что я не уверен, как это сделать. Конечно, таймер должен быть размещен на viewController с mapView. Тогда, вероятно, какой-то наблюдатель согласился на аннотации... Но в этой концепции, где удалить наблюдателя и где настроить действия для наблюдателей, изменения..? Или, может быть, есть лучшая концепция? Спасибо за любой ответ.

1 ответ

Решение

Я бы сделал свой собственный класс MKAnnotation.

@interface MyAnnotation : NSObject <MKAnnotation> {
    CLLocationCoordinate2D _coordinate;
    NSMutableString * title;
    NSMutableString * subtitle;
    ...
    UIImage * pinImage;
    ...
    NSDate * startTime;
}

Этот класс будет иметь NSDate * startTime как свойство и метод refreshTime, которые сравнивают текущее время ([NSDate date]) и отобразите в субтитрах прошедшее время.

Тогда вам просто нужно обновить аннотации ваших карт

for(MyAnnotation * annotation in [mapView annotations]) {
    if([annotation isKindOfClass:[MyAnnotation class]]) // important cause the user centered blue point is part of your annotation list!
        [annotation refreshTime];
}

Теперь вопрос: когда вы хотите обновить?

Например, вы можете использовать таймер, который обновляется каждые n секунд, или запускать обновление в ViewDidAppear... это зависит от того, что вы хотите сделать!

Редактировать:

Если вы хотите обновить выбор аннотации, возможно, вы можете создать свой собственный подкласс AnnotationView в MKAnnotationView.

Затем в вашем AnnotationView переопределите touchesBegan:withEvent: или же touchesEnded:withEvent: отправить обновление.

Я не проверял, но я уверен, что это сработает.

Другие вопросы по тегам