36

と の違いを教えてpresentViewControllerくださいUiNavigationController。アプリ内のさまざまなビューをナビゲートするpresentViewController代わりに使用できますか? UINavigationController使用するシナリオは何ですか?

4

4 に答える 4

74

presentViewControllerいわゆるモーダル ビュー コントローラーを表示するメカニズムを提供します。つまり、プレゼンティング コントローラーの上に重ねることで、UI を完全に制御するビュー コントローラーです。

UINavigationControllerは、新しいコントローラーをプッシュし、後でポップして、以前のコントローラーに順序どおりに戻ることができる、はるかに柔軟なメカニズムを提供します。ナビゲーション コントローラーのコントローラーが、左から右へのシーケンスを構築するだけだと想像してください。

一度に1 つのView Controllerのみを表示presentViewControllerする場合に最適だと思います。確かにそれを使用して、より多くのView Controllerを積み重ねることができます(したがって、貧乏人のナビゲーションコントローラーを「模倣」します)が、期待どおりに機能しないものをすぐに見つけることができると思います。

具体的には、このような制限の例を次に示します。モーダル ビュー コントローラーを閉じると (「閉じる」ために)、モーダルに表示されたすべてのビュー コントローラー (同じ表示コントローラーから) も一度に閉じられます。したがって、「戻る」/ナビゲーションのような機能を実装することはできません。

したがって、それはあなたが何をしようとしているのかによって異なります。

于 2013-01-09T10:33:12.943 に答える
25

Aは、 View Controller のスタックを管理し、戻るボタンなどを追加するUINavigationControllerのサブクラスです。UIViewController

presentViewControllerUIViewControllerモーダル ビュー コントローラーを表示するために使用するクラスのメソッドです。

于 2013-01-09T10:29:48.823 に答える
5

UINavigationController、ナビゲーション スタックを維持します。その後、階層コンテンツをナビゲートできます。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

メソッドを使用UIViewControllers presentViewControllerする場合、基本的にはView Controllerを置き換えるだけです。ナビゲーション スタックは維持されません。

于 2013-01-09T10:29:53.927 に答える
3

UINavigationController はクラス、presentViewController は UIViewController (iOS 5 以降) のインスタンス メソッドであり、UINavigationController はそのサブクラスです。

pushViewController は、presentViewController と同等のメソッドです。iOS 2 以降では UINavigationController のインスタンスメソッドです。

于 2013-01-09T10:26:08.967 に答える