Изображения с аннотациями местоположения

В настоящее время я работаю над функцией, в которой пользователь может нажать на аннотацию карты и перейти на другой экран, на котором будет изображение этого местоположения. Я использую Mapbox и функцию tapOnCallout для перехода к другому контроллеру представления (imageLocationViewController), который будет содержать представление изображения.

Проблема, с которой я сталкиваюсь, заключается в том, чтобы сообщить этому imageLocationViewController, какая аннотация была нажата и, следовательно, какое изображение должно быть показано. Я использую firebase для хранения своих данных, а в данных аннотации у меня есть photoUrl, который содержит соответствующее изображение.

В настоящее время я могу распечатать соответствующее имя аннотации и URL-адрес фотографии, когда я перехожу. Однако, как только я нахожусь в контроллере представления imageLocation, я полагаю, что теряю эти данные?

Кто-нибудь знает, как я могу передать эти данные в новый контроллер представления, чтобы я мог передать правильный 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)")

    }
}

Обновление ** Код для подготовки к переходу

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

person Cal    schedule 04.06.2017    source источник
comment
Возможный дубликат Передача данных между контроллерами представления   -  person Chris    schedule 04.06.2017
comment
Моя проблема в том, что мой код уже содержит переопределение функции подготовки (для перехода: UIStoryboardSegue, отправитель: Любой?)   -  person Cal    schedule 04.06.2017
comment
Не могли бы вы показать этот код, Кэл?   -  person Chris    schedule 04.06.2017
comment
Привет, Крис, я обновил код. Этот переход переносит меня во всплывающее окно, где я редактирую информацию аннотации.   -  person Cal    schedule 04.06.2017


Ответы (1)


Я бы установил локальную переменную всякий раз, когда срабатывает функция делегата mapView, непосредственно перед вызовом performSegue, а затем использовал эту переменную в 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
    }
}
person Chris    schedule 04.06.2017