如何识别何时按下注释

时间:2018-07-30 10:12:20

标签: swift mkannotation

如您所见,我已经在此处创建了新注释

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)

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

  

我怎么知道他们点击了哪个注释?

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

然后我要在此处打印一个标签,可以为每个注释设置不同的标签

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

1 个答案:

答案 0 :(得分:0)

如我所见,您已经创建了一个将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!)
        }

    }

你去了。

如果有任何问题,请给我评论。