Замените pushViewController с переходом в MapKit - PullRequest
0 голосов
/ 29 августа 2018

Я создал приложение с собственной MKAnnotation. У меня есть другой ViewController, и я пытаюсь отправить данные по segue. Теперь у меня есть навигационный контроллер и рабочий код, подобный этому

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {

    let annotationView:MyAnnotation = view.annotation as! MyAnnotation
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let detailStoryboard = storyboard.instantiateViewController(withIdentifier: "stationDetails") as! DetailViewController
    detailStoryboard.stationTitleText = (annotationView.title)!
    detailStoryboard.bikeRacksText = (annotationView.bike_racks)!
    detailStoryboard.bikesText = (annotationView.bikes)!
    detailStoryboard.freeRacksText = (annotationView.free_racks)!
    detailStoryboard.distanceText = (annotationView.distance)!
    self.navigationController?.pushViewController(detailStoryboard, animated: true)
}

Но я хочу заменить контроллер навигации на segue. Я создал segue с идентификатором «pinTouched» и заменил последнюю строку в моем коде на

performSegue(withIdentifier: "pinTouched", sender: nil)

Мой перформанс выглядит следующим образом

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "pinTouched")
    {
        var detailScreen = segue.destination as! DetailViewController
    }
}

Я пытался несколькими способами отправить эти данные в этой функции, но у меня только белый экран. Как я могу это исправить?

Спасибо за ответ! :)

1 Ответ

0 голосов
/ 29 августа 2018

Вам необходимо заполнить данные

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
     performSegue(withIdentifier: "pinTouched", sender:view.annotation)
}

затем внутри prepare(for segue

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "pinTouched")
    {
         let detailStoryboard = segue.destination as! DetailViewController
         let annotationView = sender as! MyAnnotation 
         detailStoryboard.stationTitleText = (annotationView.title)!
         detailStoryboard.bikeRacksText = (annotationView.bike_racks)!
         detailStoryboard.bikesText = (annotationView.bikes)!
         detailStoryboard.freeRacksText = (annotationView.free_racks)!
         detailStoryboard.distanceText = (annotationView.distance)!
    }
}
...