と の違いを教えてpresentViewController
くださいUiNavigationController
。アプリ内のさまざまなビューをナビゲートするpresentViewController
代わりに使用できますか? UINavigationController
使用するシナリオは何ですか?
4 に答える
presentViewController
いわゆるモーダル ビュー コントローラーを表示するメカニズムを提供します。つまり、プレゼンティング コントローラーの上に重ねることで、UI を完全に制御するビュー コントローラーです。
UINavigationController
は、新しいコントローラーをプッシュし、後でポップして、以前のコントローラーに順序どおりに戻ることができる、はるかに柔軟なメカニズムを提供します。ナビゲーション コントローラーのコントローラーが、左から右へのシーケンスを構築するだけだと想像してください。
一度に1 つのView Controllerのみを表示presentViewController
する場合に最適だと思います。確かにそれを使用して、より多くのView Controllerを積み重ねることができます(したがって、貧乏人のナビゲーションコントローラーを「模倣」します)が、期待どおりに機能しないものをすぐに見つけることができると思います。
具体的には、このような制限の例を次に示します。モーダル ビュー コントローラーを閉じると (「閉じる」ために)、モーダルに表示されたすべてのビュー コントローラー (同じ表示コントローラーから) も一度に閉じられます。したがって、「戻る」/ナビゲーションのような機能を実装することはできません。
したがって、それはあなたが何をしようとしているのかによって異なります。
Aは、 View Controller のスタックを管理し、戻るボタンなどを追加するUINavigationController
のサブクラスです。UIViewController
presentViewController
UIViewController
モーダル ビュー コントローラーを表示するために使用するクラスのメソッドです。
はUINavigationController
、ナビゲーション スタックを維持します。その後、階層コンテンツをナビゲートできます。
メソッドを使用UIViewControllers
presentViewController
する場合、基本的にはView Controllerを置き換えるだけです。ナビゲーション スタックは維持されません。
UINavigationController はクラス、presentViewController は UIViewController (iOS 5 以降) のインスタンス メソッドであり、UINavigationController はそのサブクラスです。
pushViewController は、presentViewController と同等のメソッドです。iOS 2 以降では UINavigationController のインスタンスメソッドです。