我想知道如何检测地图上哪个标记被按下。我在地图上有几个标记,并且从API下载的标记数组中有一个名为Marker的类,其中包含一些数据。现在我想知道如何在按下标记后将数据发送到下一个VC。是否将整个数组发送到下一个VC,然后通过另一个VC上的数组以某种方式获取数据是可行的?
我想知道如何检测地图上哪个标记被按下。我在地图上有几个标记,并且从API下载的标记数组中有一个名为Marker的类,其中包含一些数据。现在我想知道如何在按下标记后将数据发送到下一个VC。是否将整个数组发送到下一个VC,然后通过另一个VC上的数组以某种方式获取数据是可行的?
userData
属性来存储您想要的唯一数据。for (index,i) in markers.enumerated() {
let marker = GMSMarker()
marker.position = CLLocationCoordinate2DMake(i.lat, i.lng)
marker.userData = ["index": index]
print("@@@\(i.id)")
marker.title = i.name
marker.map = mapView
}
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
performSegue(withIdentifier: "details", sender: marker)
return true
}
prepareForSegue
方法中,从 userData
中获取对象的索引。override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "details" {
var nextVC = segue.destination as! VC2
if let marker = sender as? GMSMarker,
let dict = marker.userData as? [String:Int] {
print(dict["index"])
// use this array index to access object from array
}
}
}
prepareForSegue
改成我的那个了吗?改完之后有没有正常工作? - Nirav D