Swift 如何将segue上的地图注释传递到另一个vc上的mapView?

Swift 如何将segue上的地图注释传递到另一个vc上的mapView?,swift,mapkit,Swift,Mapkit,我目前有一个带有注释的地图,希望将其传递给另一个VC上的另一个地图(复制地图)。如何在“准备Segue”功能中做到这一点 在我目前的地图VC if segue.identifier == "addEntrySegue", let addEntryVC = segue.destination as? AddEntryViewController { addEntryVC.mapView.addAnnotation(annotation)

我目前有一个带有注释的地图,希望将其传递给另一个VC上的另一个地图(复制地图)。如何在“准备Segue”功能中做到这一点

在我目前的地图VC

    if segue.identifier == "addEntrySegue",
        let addEntryVC = segue.destination as? AddEntryViewController
    {
        addEntryVC.mapView.addAnnotation(annotation)
        let span = MKCoordinateSpanMake(0.05,0.05)
        let region = MKCoordinateRegionMake(annotation.coordinate, span)
        addEntryVC.mapView.setRegion(region, animated: true)

    }

prepare(for:sender:)
中传递数据的基本思想是正确的

显然,您需要确保视图控制器的标识符和强制转换成功,可能需要在
if
语句中添加一个断点。我本以为,如果这条
if
语句成功,那么在此时尝试与
mapView
交互时,您可能会崩溃,因此我想知道这条
语句是否成功。如果没有成功,您需要再次检查(a)在IB中为segue指定的情节提要标识符的拼写和大小写;(b)目标场景的基类实际上是
AddEntryViewController

但是,即使您确认
if
语句工作正常,也不能仅在
prepare(for:sender:)
中更新目标视图控制器的
UIKit
控件,因为它们尚未创建。因此,您不能在
prepare(for:sender:)
中引用地图视图


AddEntryViewController
中应该有一个注释属性,而
prepare
应该简单地设置它。然后,在创建视图的
AddEntryViewController
viewdiload
中,将该注释添加到地图视图并设置区域/摄像机。

prepare(for:sender:)
中传递数据的基本思想是正确的

显然,您需要确保视图控制器的标识符和强制转换成功,可能需要在
if
语句中添加一个断点。我本以为,如果这条
if
语句成功,那么在此时尝试与
mapView
交互时,您可能会崩溃,因此我想知道这条
语句是否成功。如果没有成功,您需要再次检查(a)在IB中为segue指定的情节提要标识符的拼写和大小写;(b)目标场景的基类实际上是
AddEntryViewController

但是,即使您确认
if
语句工作正常,也不能仅在
prepare(for:sender:)
中更新目标视图控制器的
UIKit
控件,因为它们尚未创建。因此,您不能在
prepare(for:sender:)
中引用地图视图


AddEntryViewController
中应该有一个注释属性,而
prepare
应该简单地设置它。然后,在创建视图的
AddEntryViewController
viewdiload
中,将该注释添加到地图视图并设置区域/摄像机。

到目前为止您是如何尝试的?我已经编辑了q@holexhow您是如何尝试的?我已经编辑了q@holex