我在MapKit中有一个自定义的标注视图,其中包含一个按钮。我想这样做,以便点击此按钮将执行给定的segue。我怎么能这样做,因为我从.xib加载自定义callout,其类是UIView的子类(而不是UIViewController,所以我不能只在它的类文件中执行segue)
修改
if control == view.detailCalloutAccessoryView as? CustomCalloutView {
if control.viewWithTag(6).touchesBegan {
performSegueWithIdentifier("showRentalDetailsFromCalloutView", sender: self)
}
}
答案 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