Есть ли способ вызывать метод только тогда, когда пользователь нажимает на пин-код аннотации?

#objective-c #cocoa-touch #ios #mkannotationview

#objective-c #cocoa-touch #iOS #mkannotationview

Вопрос:

Я хочу выполнять вызов метода только тогда, когда пользователь нажимает на пин-код аннотации на карте. Я прочитал документацию Apple, но все еще не уверен, как я могу это сделать (или возможно ли это вообще).

Например, я создал класс restaurant со свойством ‘Distance from current location’, и экземпляры добавляются в mapview в качестве аннотаций. Я хочу запускать calculateDistance метод только тогда, когда пользователь нажимает на аннотацию (и отображается вид выноски).

Есть ли какой-нибудь способ сделать это?

Ответ №1:

Переопределите - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view в вашем делегате MapView.

MKAnnotationView Содержит свойство annotation .

Комментарии:

1. Спасибо! Однако мне нужно, чтобы последнее вычисленное значение отображалось в представлении аннотации. (хранится как свойство моего класса). Кажется, мне нужно снова щелкнуть по аннотации, прежде чем отобразится правильное значение. Есть ли способ обновить представление аннотации перед отображением выноски?

2. @Zhen В моей ситуации я все еще использую didSelectAnnoationView. Затем я получаю данные (в данном случае эскиз с сервера), а затем обновляю выноску, когда извлекаю данные. Показываю простую анимацию для обновления. Не знаю, поможет ли подобное решение. Потому что нет другого способа «предсказать», какую аннотацию выберет пользователь.