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
}
このようなdidTapメソッドを実行します。 prepareForSegue
で今
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
performSegue(withIdentifier: "details", sender: marker)
return true
}
は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
}
}
}
オーケー、私が行って何です: コメントにコードを追加する方法がわからないので、私は、ペーストビンへのリンクを配置します:P http://pastebin.com/aeQHT9cL – Magnifique
@Tonamini編集された答えを確認してください –
まだ空のdictを取得しています。 http://pastebin.com/i6UEfq2R すべてがOKと思われます – Magnifique