#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. Затем я получаю данные (в данном случае эскиз с сервера), а затем обновляю выноску, когда извлекаю данные. Показываю простую анимацию для обновления. Не знаю, поможет ли подобное решение. Потому что нет другого способа «предсказать», какую аннотацию выберет пользователь.