如何将数据从地图注释传递到另一个VC

时间:2018-04-27 11:33:31

标签: ios mapkit swift4

这是我的第一个问题,对错误感到抱歉。我找到了一些答案,但我的代码中没有任何效果。 首先

我制作了segue并添加了标识符。

这是在我的MainMapViewController中:

  func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
        guard let annotation = mapView.selectedAnnotations.first else {return}
        annotationPlace = annotation as? Place
        self.performSegue(withIdentifier: "showDetail", sender: self)
    }

    func showPlaceDetail(segue: UIStoryboardSegue){
        let viewController = segue.destination as? PlaceDetailTableViewController
        viewController?.selectedPlace = annotationPlace
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showDetail" {
            showPlaceDetail(segue: segue)
        }
    }

这是我的PlaceDetailTableViewController:

   import UIKit

class PlaceDetailTableViewController: UITableViewController {

    var selectedPlace:Place?

    override func viewDidLoad() {
        super.viewDidLoad()
        dump(selectedPlace as Any)
        print(selectedPlace?.title)
    }
}

在我看来,它与VC之间的正常传递数据有所不同,因为我必须从注释按钮中创建segue

1 个答案:

答案 0 :(得分:0)

尝试这种方式:

DynamicHtml += "<tr><td onclick='populateModal()'>" + arr[i].step + "</td><td></td><td>"+ arr[i].task +"</td><td onclick='gotoMachine(* VAR HERE*)'>"+ arr[i].machine +"</td> </tr>"

删除override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "showDetail" { if let toViewController = segue.destination as? PlaceDetailTableViewController { toViewController.selectedPlace = annotationPlace } } } 功能。并在 dumb 方法之前打印showPlaceDetail