MKPinAnnotationView - разные действия в разных пинах - PullRequest
0 голосов
/ 22 марта 2012

У меня есть вопрос о MKPinAnnotationView. Сначала я ввел координаты выводов, а затем вызвал viewForAnnotation, чтобы построить их, а также добавил их правую кнопку.

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

Когда я ищу тег кнопки в NSLog, он всегда показывает 0 для каждого пина, поэтому я не могу сделать это с тегами.

Вот код кнопки, если она что-то значит:

for (int i=0;i<=[[mapview annotations]count];i++) {
    pinView.tag = i ;
    rightButton.tag=i;
}

1 Ответ

0 голосов
/ 22 марта 2012

Вам не нужно (и не следует) использовать теги.

Вместо этого в методе действия вы можете определить, какая аннотация была выбрана, и затем выполнить другую логику на основе этого.

Вам даже не нужно создавать собственный метод действия.При нажатии на кнопку выноски вид карты вызовет свой метод делегата calloutAccessoryControlTapped, который дает вам ссылку на аннотацию (т. Е. view.annotation).Если вы решите использовать метод делегата, удалите addTarget из viewForAnnotation и просто реализуйте метод делегата.

Если вы по какой-то причине хотите использовать свой собственный метод действия, вы можете определить, какая аннотация былавыбранный, смотря на свойство selectedAnnotations вида карты.Выбранная аннотация будет с индексом 0 (сначала убедитесь, что count массива не равен нулю).


Пример кода для всего вышеперечисленного см. В следующем вопросе:
Как сохранить данные, связанные с MKAnnotation, от потери после всплывающего вызова и нажатия пользователем кнопки раскрытия?

...