Как я могу вызвать функцию при нажатии MKPlacemark в MapView (Swift)? - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь выполнить определенную функцию при каждом нажатии MKPlacemark на моем MapView. Эта функция извлекает информацию из метки и отображает ее в отдельном окне. Я пытался использовать

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {}

но это не похоже на работу. Я не уверен, должен ли я называть каждую метку, я избегал этого, потому что я уже отображаю данные местоположения в имени (как видно из моего кода). Любая помощь приветствуется. Мой код:

Инициирование метки (это происходит много раз, переменные уже были созданы):

let coords = CLLocationCoordinate2DMake(latOfPlace!, lonOfPlace!)
let address = [CNPostalAddressStreetKey: addressStreetKey, CNPostalAddressCityKey: addressCityKey, CNPostalAddressPostalCodeKey: addressPostalCodeKey, CNPostalAddressISOCountryCodeKey: addressISOCountryCodeKey]
let place = MKPlacemark(coordinate: coords, addressDictionary: address)
self.mapView.addAnnotation(place)

1 Ответ

1 голос
/ 16 марта 2019

Вам необходимо установить делегата внутри viewDidLoad

self.mapView.delegate = self

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
  guard let ann = view.annotation as? MKPlacemark else { return }
  print(ann)
}
...