如何将segue上的map注释传递给另一个vc上的mapView?

时间:2017-05-23 15:59:50

标签: swift mapkit

我目前有一个带注释的地图,并希望将其传递给另一个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)

    }

1 个答案:

答案 0 :(得分:0)

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

显然,您可能希望确保视图控制器的标识符和强制转换成功,可能是通过在if语句中添加断点。我原以为如果这个if语句成功,那么当你试图与mapView进行交互时就会崩溃,所以我想知道这个if语句是否成功了所有。如果没有成功,您需要仔细检查(a)您在IB中为segue指定的故事板标识符的拼写和大小写; (b)目标场景的基类确实是AddEntryViewController

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

您的AddEntryViewController应该有一个注释属性,prepare应该只设置一个。然后,在viewDidLoad AddEntryViewController call putx fou: cmp al,'4' jE fou1 jNE fiv fou1: mov ah, 02 ;mov ch, 8 mov dh, 8 ;mov cl, 30 mov dl, 30 int 10h call putx fiv: cmp al,'5' jE fiv1 jNE six fiv1: mov ah, 02 mov dh, 8 mov dl, 34 int 10h call putx six: mov ah,'3' 中,创建了 ,将该注释添加到地图视图并设置区域/相机。