位置注释图像

时间:2017-06-04 16:36:51

标签: image firebase annotations location callout

我目前正在开发一个功能,用户可以点击地图注释并将其带到另一个屏幕,该屏幕将保存该位置的图像。我正在使用Mapbox和tapOnCallout函数来转换到另一个视图控制器(imageLocationViewController),它将保存图像视图。

我面临的问题是让这个imageLocationViewController知道哪个注释被点击了,因此应该显示哪个图像。我正在使用firebase来保存我的数据,在注释数据中我有一个photoUrl,它保存了相关的图像。

当我正在进行调查时,我目前能够打印注释的相关名称和照片Url。但是,一旦我在imageLocation View Controller中,我相信我丢失了这些数据?

是否有人知道如何将此数据传递到新的视图控制器,以便我可以将正确的photoUrl传递到图像视图中。

这是我当前代码到imageLocationViewController的代码。

 func mapView(_ mapView: MGLMapView, tapOnCalloutFor annotation: MGLAnnotation) {



    if let annotation = annotation as? SkateAnnotation {



        self.performSegue(withIdentifier: "SkateImageSegue", sender: annotation.id)

        print("YourAnnotation: \(annotation.photoUrl)")

    }
}

更新**准备segue的代码

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "EditSaveSpotSegue" {
        let destination = segue.destination as! EditSaveSpotViewController
        destination.parkId = sender as! String
    }
}

1 个答案:

答案 0 :(得分:0)

我会在你调用performSegue之前触发mapView委托函数时设置一个局部变量,然后在prepareForSegue中使用该变量。见下文

 var annotationId: String = ""

 func mapView(_ mapView: MGLMapView, tapOnCalloutFor annotation: MGLAnnotation) {



    if let annotation = annotation as? SkateAnnotation {


        annotationId = annotation.id
        self.performSegue(withIdentifier: "SkateImageSegue", sender:self)

        print("YourAnnotation: \(annotation.photoUrl)")

    }
}


 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "EditSaveSpotSegue" {
        let destination = segue.destination as! EditSaveSpotViewController
        destination.parkId = annotationId
    }
}