他のビューコントローラの上に表示する必要があるモーダルビューコントローラのようなものがあります。私は通常のモーダルコントローラ機能(presentViewController:
と友人)を使用していません。なぜなら、プロセスをよりよく制御する必要があるからです。代わりに、私はビューコントローラの包含機能(addChildViewController:
メソッドグループ)を使用しています。UINavigationControllerのaddChildViewControllerとtopViewControllerの間の相互作用
封じ込め機能は、コードをかなり簡単にします。私は "モーダル"ビューコントローラを提示する必要があるとき、ビューコントローラ階層に子として追加し、すべてが期待通りに機能します。小さなキャッチの1つは、通常のビューコントローラがナビゲーションコントローラにラップされていることです。したがって、モーダルコントローラーをナビゲーションコントローラーの子として追加する必要があります。それ以外の場合は、ナビゲーションバーとツールバーでカバーされます。
ナビゲーションコントローラでaddChildViewController:
を呼び出すと、コントローラが通常のpushViewController:
メソッドを使用してプッシュされたかのように、新しいコントローラがtopViewController
として設定されるという問題があります。これは、モーダルコントローラが表示されている間、その下にある通常のコントローラは、外観および回転コールバックを受け取らないことを意味します。
これはバグのようですか、何か不足していますか?
この問題は迅速に対応していますが、これは目的関数-cの場合は機能しません。それはトップビューコントローラとして追加しています –