Как получить всю информацию из аннотации пин-кода в Swift 3 - PullRequest
0 голосов
/ 03 июля 2018

Мне было интересно, как получить всю информацию из аннотации в swift при нажатии. Есть эта статья: Swift, как получить информацию из пользовательской аннотации по нажатию

Но это не отвечает на мой вопрос. Я сделал некоторые изменения в коде.

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    if let annotationTitle = view.annotation?.title {
        if let annotationPhone = view.annotation?.phoneNumber as? MKAnnotationView {
            print("User tapped on annotation with title: \(annotationPhone!)")
        }
        print("User tapped on annotation with title: \(annotationTitle!)")
    }
}

Создание булавки, если это вообще помогает:

let annotation = MKPointAnnotation()
annotation.coordinate = item.placemark.coordinate
annotation.title = item.name
annotation.subtitle = "Coffee Shop"
self.map.addAnnotation(annotation)

Но я получаю ошибку:

Value of type 'MKAnnotation' has no member 'phoneNumber'

Что я делаю не так?

1 Ответ

0 голосов
/ 04 июля 2018

Просто подкласс MKPointAnnotation со свойством под названием phoneNumber:

class PhoneAnnotation : MKPointAnnotation {
    var phoneNumber: String?
}

После этого вы можете получить значение phoneNumber (и другие пользовательские значения) из аннотации следующим образом:

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    if let phoneNumber = (view.annotation as? PhoneAnnotation)?.phoneNumber {

    }
}
...