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