Свифт, как я могу сохранить пользовательское значение для каждого сброшенного контакта, используя MKPointAnnotation?

Я хочу, чтобы иметь возможность хранить пользовательское значение для каждого сброшенного булавки, используя MKPointAnnotation, В частности, я хочу сохранить какой-то идентификатор с каждым контактом и получить в calloutAccesoryControlTapped,

2 ответа

Решение

Вам нужно создать подкласс MKPointAnnotation со свойством для хранения этого пользовательского значения (я назвал его тегом)

import UIKit
import MapKit
class CustomPointAnnotation: MKPointAnnotation {
    var tag: Int!
}

Создание пинов:

let annotation = CustomPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: CLLocationDegrees(latitude), longitude: CLLocationDegrees(longitude))
            annotation.title = [insert name]
            annotation.tag = [insert tag]
            self.mapView.addAnnotation(annotation)

И в viewForAnnotation вашего делегата mapView, после проверки dequeableAnnotation, вы делаете:

  if (annotation is CustomPointAnnotation) {
       pinView?.tag = (annotation as! CustomPointAnnotation).tag
  }

Незначительное изменение к ответу Маркоса Гризелли. pinView должен быть приведен для доступа к пользовательскому тегу.

if (annotation is CustomPointAnnotation) {
    (pinView?.annotation as! CustomPointAnnotation).tag = (annotation as! CustomPointAnnotation).tag
}
Другие вопросы по тегам