如何识别何时按下注释

How to identify when a annotation is pressed which one it is

如您所见,我在这里创建了一个新注释

var pin = CustomPointAnnotation()
pin.coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
pin.title = "Bus Stop"
pin.subtitle = "City Stand D"
pin.imageName = "pin"

mapView.addAnnotation(pin)

现在当用户点击注释时,我想要运行一个方法。但我的问题是:

How do I know which annotation they clicked on?

然后问题是我正在使用一个循环来创建多个注释,所以我无法设置标签,因为它将成为最后设置的标签。

然后这里我想打印一个标签,可以为每个注释设置不同的标签

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
    print(view.tag)
}

如我所见,您已经创建了一个 class 子 class 一个 MKPointAnnotation.

这很简单,您只需创建一个具有名称和类型的变量。

class CustomPointAnnotation: MKPointAnnotation {
    var tag: Int!
}

然后在你的代码中,设置变量。

var pin = CustomPointAnnotation()
pin.coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
pin.title = "Bus Stop"
pin.subtitle = "City Stand D"
pin.imageName = "pin"
pin.tag = index

mapView.addAnnotation(pin)

然后在点击注解的时候访问变量。就在这里做吧。

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

        if let annotation = view.annotation as? CustomPointAnnotation {
            print(annotation.tag!)
        }

    }

好了。

如果您有任何问题,请给我留言。