如何在删除引脚时打开MKPinAnnotationView

时间:2017-02-07 16:47:39

标签: ios swift mkmapview mkannotationview

我目前正在使用此功能删除可重复使用的引脚:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?{

    guard !(annotation is MKUserLocation) else { return nil }
    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
    if pinView == nil {
        pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
    }
    pinView?.pinTintColor = UIColor.orange
    pinView?.canShowCallout = true

    let smallSquare = CGSize(width: 30, height: 30)
    let button = UIButton(frame: CGRect(origin: CGPoint.zero, size: smallSquare))
    button.setTitle("Test", for: UIControlState())
    button.addTarget(self, action: #selector(triggerConfirmedLocation), for: .touchUpInside)

    pinView?.leftCalloutAccessoryView = button
    pinView?.rightCalloutAccessoryView = button
    return pinView
}

目前,用户必须点击图钉才能看到注释;但是,当引脚掉落时,我需要打开注释。

我尝试过这些方法:

pinView?.isSelected = true

mapView.selectedAnnotations(reuse, animated: true)

然而,第一种方法什么都不做。

第二种方法有错误 “不能调用非函数类型的值'[MKAnnotation]'”

1 个答案:

答案 0 :(得分:1)

您需要MKMapView使用此方法:

func selectAnnotation(_ annotation: MKAnnotation, animated: Bool)

您可以像这样传递委托覆盖中的注释:

mapView.selectAnnotation(annotation, animated: true)

只需在退回pinView之前调用它,就可以了。

希望有所帮助。