モーダルビューコントローラーのようなものがあり、他のビューコントローラーの上に表示する必要があります。プロセスをより適切に制御する必要があるため、通常のモーダルコントローラー機能(presentViewController:
およびその仲間)を使用していません。代わりに、View Controller包含機能(addChildViewController:
メソッドグループ)を使用しています。
包含機能により、コードはかなり単純になります。「モーダル」ビューコントローラーを提示する必要がある場合は、それを子としてビューコントローラー階層に追加すると、すべてが期待どおりに機能します。小さな問題の1つは、通常のビューコントローラーがナビゲーションコントローラーにラップされていることです。したがって、モーダルコントローラーをナビゲーションコントローラーの子として追加する必要があります。そうしないと、ナビゲーションバーとツールバーでカバーされます。
ここで問題となるのは、ナビゲーションコントローラーを呼び出すと、コントローラーが通常の方法を使用してプッシュされたかのようaddChildViewController:
に、新しいコントローラーもとして設定されることです。これは、モーダルコントローラが表示されている間、その下にある通常のコントローラは外観と回転のコールバックを受け取らないことを意味します。topViewController
pushViewController:
これはバグのように感じますか、それとも何かが足りませんか?