Использование for loop
Я сохранил уникальный URL в каждой аннотации, используя тег create в классе с именем CustomPointAnnotation. Я пытаюсь распечатать URL аннотации, которая была нажата. Проблема в том, что моя консоль вывода в Xcode ничего не печатает, когда я нажимаю на аннотацию.
Я пытался следовать этому руководству: Как определить, когда нажата аннотация, какая это
Я скопировал весь код, но он не определяет, была ли нажата аннотация.
Как узнать, нажата ли аннотация?
Вот пользовательская аннотация.
class CustomPointAnnotation: MKPointAnnotation {
var tag: String!
}
Я объявил тэг переменной, чтобы хранить уникальную переменную для каждой аннотации.
Мой ViewController
класс:
В классе ViewController есть цикл, который перебирает мои файлы JSON базы данных Firebase:
func displayCordinates() {
ref = Database.database().reference()
let storageRef = ref.child("waterfountains")
storageRef.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children.allObjects as! [DataSnapshot] {
let annotation = CustomPointAnnotation()
let dict = child.value as? [String : AnyObject] ?? [:]
annotation.title = "Water Fountain"
annotation.tag = dict["url"] as? String
annotation.coordinate = CLLocationCoordinate2D(latitude: dict["lat"] as! Double, longitude: dict["long"] as! Double)
self.mapView.addAnnotation(annotation)
}
})
}
Аннотации отображаются при вызове функций в viewDidLoad
:
override func viewDidLoad() {
super.viewDidLoad()
displayCordinates()
}
Функция, которая должна определять, была ли нажата аннотация:
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let annotation = view.annotation as? CustomPointAnnotation {
print(annotation.tag!)
}
}
Спасибо за помощь.