2017-05-23 6 views
1

私は現在、アノテーション付きマップを持っており、これを別のVC上の別のマップに渡したい(マップを複製する)。どのように私はSegue機能の準備にこれを行うことができますか?私の現在のマップでは別のVCのmapViewにsegueの地図注釈を渡すにはどうすればいいですか?

VC

if segue.identifier == "addEntrySegue", 
     let addEntryVC = segue.destination as? AddEntryViewController 
    { 
     addEntryVC.mapView.addAnnotation(annotation) 
     let span = MKCoordinateSpanMake(0.05,0.05) 
     let region = MKCoordinateRegionMake(annotation.coordinate, span) 
     addEntryVC.mapView.setRegion(region, animated: true) 

    } 
+0

どのようにこれまでこれをやろうとしましたか? – holex

+0

私はHaVを編集しました –

答えて

0

prepare(for:sender:)にデータを渡すの基本的な考え方は正しいです。

明らかに、そのifステートメントの中にブレークポイントを追加することによって、識別子とビューコントローラのキャストが成功したかどうかを確認する必要があります。私はこのifステートメントが成功した場合、この時点でmapViewと対話しようとしたときにクラッシュしてしまったと考えていたので、このifステートメントが成功したかどうか疑問に思います。成功していない場合は、(a)IBで指定したストーリーボード識別子のスペルと大文字を再度確認してください。 (b)宛先シーンの基本クラスが実際にAddEntryViewControllerであること。

しかし、あなたはif文が正常に動作していることを確認した場合でも、彼らはまだ作成されていないので、あなただけの、prepare(for:sender:)で先ビュー・コントローラのUIKitコントロールを更新することはできません。したがって、prepare(for:sender:)のマップビューは参照できません。

AddEntryViewControllerにアノテーションプロパティがあり、prepareに設定する必要があります。次にviewDidLoadAddEntryViewControllerで、ビューが作成された時点でが作成された時点で、その注釈をマップビューに追加して、リージョン/カメラを設定します。

+0

素晴らしい説明、ありがとう! @Rob –

関連する問題