Таймер в выноске 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:
отправить обновление.
Я не проверял, но я уверен, что это сработает.