アプリにハンドオフを追加しようとしています。アプリが Handoff によって起動されたら、いくつかの ViewController を閉じて、ビュー階層にある MKMapView に戻る必要があります。
私のビュー階層は次のようになります。
+ナビコントローラー
+--- MyMapViewController (NavController の上に、行きたい MKMapView が含まれています)
+--- MyTabbarViewController (複数のビューを持つタブ バーです...)
+--- MyOverviewViewController (MyTabbarViewController に表示される VC によって NacController のスタックにプッシュされる)
+--- MyDetailViewController (it's a modal view presented by MyOverviewController)
+--- MyChartViewController (it's a modal view presented by MyDetailViewController)
アプリが UserActivity を受け取ると、表示されるビュー コントローラーは「MyChartViewController」です。
ユーザー アクティビティの結果を表示するには、MyMapViewController に移動して、MapView に関する情報を表示する必要があります。
私の問題は、[navController popToRootViewControllerAnimated:TRUE]; を呼び出す前に、「MyChartViewController」と「MyDetailsViewController」を閉じる簡単な方法を見つけることです。
[navController.visibleViewController disconnectViewControllerAnimated:FALSE completion:Nil]; を試しました。しかし、MyChartViewController だけを却下するのはなぜですか?
navController.visibleViewController は MyDetailViewController です。
私が見つけた唯一の解決策は、次のように呼び出すことです。AND [navController.visibleViewController disconnectViewControllerAnimated:FALSE 完了:Nil];
ビューの階層は、UserActivity がトリガーされたときにユーザーがアプリ内のどこにいるかによって、より複雑になったり、異なったりする可能性があります。どんな状況でも使えるシンプルな解決策が見つかることを期待しています。主な問題は、モーダル viewController のスタックを破棄することです。
NavController の上にあるこの MyMapViewController に戻りたいといつも思っています。
何か案が?
ありがとう!