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