使用mapkit信息按钮推送到第二视图控制器

时间:2016-11-08 06:54:40

标签: ios swift mapkit

在我的应用程序中选择了Pin后,我希望信息按钮链接到下面的视图控制器。

2nd View Controller

如果按钮从一开始就在屏幕上,我就会知道怎么做,但是在选择一个引脚之前它就不存在了。我该如何实现?我的按钮目前只是编码如下:

    func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
    if control == view.rightCalloutAccessoryView {
        print("Button tapped ")
    }
}

另外,如果这是Segue,我可以拥有这个视图控制器,并根据点击的信息引脚按钮改变文字和照片吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果您的注释具有标题,则地图视图将响应通过委托方法选择注释

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

选择注释时,地图视图将调用此方法。您可以在已指定为地图视图委托的视图控制器中实现此方法,并告诉您的地图视图委托做什么,包括执行segue。这意味着您启动了viewcontroller,例如:

class myMapViewController: UIViewController, MKMapViewDelegate {
// Your class code starts here

}

然后在viewDidLoad()中的某个地方声明地图视图的委托是这个视图控制器:

self.myMapView.delegate = self

因此,在委托中,您可以在调用执行segue之前编写准备工作,然后在准备segue时,准备目标视图控制器,以便对所选注释执行操作。

请注意,委托方法为您提供所选的注释视图。与此注释视图一起使用的注释可通过以下方式获得:

let theAnnotation = view.annotation

在这个委托方法中。

希望这有帮助。