Свифт, как я могу сохранить пользовательское значение для каждого сброшенного контакта, используя 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
}