如何让MapKit标注按钮执行segue?

时间:2016-02-19 20:09:23

标签: ios swift mapkit

我在MapKit中有一个自定义的标注视图,其中包含一个按钮。我想这样做,以便点击此按钮将执行给定的segue。我怎么能这样做,因为我从.xib加载自定义callout,其类是UIView的子类(而不是UIViewController,所以我不能只在它的类文件中执行segue)

修改

    if control == view.detailCalloutAccessoryView as? CustomCalloutView {
        if control.viewWithTag(6).touchesBegan {
        performSegueWithIdentifier("showRentalDetailsFromCalloutView", sender: self)
        }
    }

1 个答案:

答案 0 :(得分:1)

实际上有一种方法可以检测标注上的点击。这是在Objective-C中,但您可以将其转换为Swift,它将适合您:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
        calloutAccessoryControlTapped:(UIControl *)control
{
    [self performSegueWithIdentifier:@"SegueName" sender:self];
}

以下是有关点击MKAnnotation的更详细答案的参考:MKMapView MKPointAnnotation tap event

这是我在Swift中对此方法的再现。免责声明:我没有对此进行测试,但它应该指向正确的方向。

func mapView(_ mapView: MKMapView,
    annotationView view: MKAnnotationView,
    calloutAccessoryControlTapped control: UIControl)
{

    performSegueWithIdentifier("SegueName", sender: self)

}

为了完整,这里有一个指向MKMapViewDelegate文档的链接,其中包含有关此功能的详细信息:MKMapViewDelegate Protocol Reference