使用 mapkit 信息按钮推送到第二个视图控制器
Push to Second View Controller with mapkit info button
一旦在我的应用程序中选择了 Pin 图,我希望信息按钮 link 到下面的视图控制器。
如果按钮从一开始就在屏幕上,我会知道如何执行此操作,但在选择图钉之前它不会出现。我该如何实施?我的按钮目前简单地编码如下:
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
if control == view.rightCalloutAccessoryView {
print("Button tapped ")
}
}
此外,如果这是 Segue,我能否拥有这个视图控制器并根据单击哪个信息图钉按钮更改文本和照片?
感谢您的帮助
如果您的注释有标题,您的地图视图将通过委托方法 select 响应注释
optional func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
当您 select 您的注释时,地图视图将调用此方法。您可以在您指定为地图视图委托的视图控制器中实现此方法,并告诉您的地图视图委托要做什么,包括执行 segue。这意味着您已经启动了 viewcontroller,例如:
class myMapViewController: UIViewController, MKMapViewDelegate {
// Your class code starts here
}
然后在你的 viewDidLoad() 的某处声明你的地图视图的委托是这个视图控制器:
self.myMapView.delegate = self
因此,在委托中,您可以在调用 perform segue 之前对您的准备工作进行编程,然后在为 segue 做准备时,您可以为目标视图控制器准备其对正在 selected 的注释的操作。
请注意,委托方法为您提供了您 selected 的注释视图。与此注释视图一起使用的注释是通过以下方式获得的:
let theAnnotation = view.annotation
在此委托方法中。
希望对您有所帮助。
一旦在我的应用程序中选择了 Pin 图,我希望信息按钮 link 到下面的视图控制器。
如果按钮从一开始就在屏幕上,我会知道如何执行此操作,但在选择图钉之前它不会出现。我该如何实施?我的按钮目前简单地编码如下:
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
if control == view.rightCalloutAccessoryView {
print("Button tapped ")
}
}
此外,如果这是 Segue,我能否拥有这个视图控制器并根据单击哪个信息图钉按钮更改文本和照片?
感谢您的帮助
如果您的注释有标题,您的地图视图将通过委托方法 select 响应注释
optional func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
当您 select 您的注释时,地图视图将调用此方法。您可以在您指定为地图视图委托的视图控制器中实现此方法,并告诉您的地图视图委托要做什么,包括执行 segue。这意味着您已经启动了 viewcontroller,例如:
class myMapViewController: UIViewController, MKMapViewDelegate {
// Your class code starts here
}
然后在你的 viewDidLoad() 的某处声明你的地图视图的委托是这个视图控制器:
self.myMapView.delegate = self
因此,在委托中,您可以在调用 perform segue 之前对您的准备工作进行编程,然后在为 segue 做准备时,您可以为目标视图控制器准备其对正在 selected 的注释的操作。
请注意,委托方法为您提供了您 selected 的注释视图。与此注释视图一起使用的注释是通过以下方式获得的:
let theAnnotation = view.annotation
在此委托方法中。
希望对您有所帮助。