いつもお世話になっております。
前提・実現したいこと
MapViewに配置されているアノテーションをタップすると
CalloutAccessoryViewが表示されるようになっており右側には
DetailDisclosureボタンが配置されています。
このボタンを押したときに、タップされたアノテーションの詳細を
詳細画面みたいな形にして、画面遷移させたいのですが
その際にパラメータを1つ遷移先に渡したいです。
現在の実装ではその渡すパラメータ(具体的にはAPIに投げるためのid)を
アノテーションのsubtitleに取り敢えず保存しておいて
以下の実装で遷移先に渡しているのですが、これだと当たり前ですが
subtitleが設定されているため、CalloutAccessoryViewに表示されてしまいます。
これをCalloutAccessoryViewに表示しない形で、ボタンが押された時に
アノテーションに対になって紐づいているidを遷移先に渡したいです。
宜しくお願い致します。
試したこと
Swift
1/// mapViewにマーカーを配置する 2 /// 3 /// - Parameters: 4 /// - title: マーカーのタイトル 5 /// - coodinate: マーカーの位置 6 private func setAnnotation(title:String?,id:String?,coodinate:CLLocationCoordinate2D){ 7 let annotation = MKPointAnnotation() 8 annotation.title = title 9 annotation.subtitle = id 10 annotation.coordinate = coodinate 11 self.mapView.addAnnotation(annotation) 12 } 13 14func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl){ 15 if control == view.rightCalloutAccessoryView{ 16 print("詳細ボタン押された") 17 18 let id = view.annotation?.subtitle 19 self.performSegue(withIdentifier: "toDetail", sender: id!) 20 } 21 } 22 23 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 24 if segue.identifier == "connectToDetail"{ 25 let detailView = segue.destination as! DetailViewController 26 detailView.id = sender as! String 27 } 28 } 29
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/07 15:27