2

の違いを知りたい

[self presentModalViewController:controller animated:YES];

    [self.navigationController pushViewController:controller animated:YES];

私は両方を使用しましたが、まだ違いがわからないか、気づいていません。それらのいずれかをいつ使用する必要がありますか?

ありがとう..

4

3 に答える 3

3

基本的な違い:

pushViewControllerナビゲーションコントローラーでのみ機能します

presentModalViewControllerすべてのView Controllerで機能します

navigationControllerUINavigationControllerは、ナビゲーション スタック ( ) 内のすべてのコントローラーによって使用されるのインスタンスですUIViewController

于 2011-04-20T09:51:59.940 に答える
2

モーダルビューを表示することは、別のビューの上にビューを表示することです。これらは通常、自己完結型の方法で開始および完了する必要がある「タスク」に対して実行します。Appleデベロッパガイドのモーダルビューについてさらに読んでください。

アプリでナビゲーションが論理的に必要な場合は、ビューをナビゲーションコントローラーにプッシュするのは異なります。iDevicesの設定アプリのようにドリルダウンテーブルを言います。メイン設定があり、サブ設定などにドリルダウンします。

あなたの質問が何であれ、それらが概念的で一般的であるならば、私はあなたに適切なアップルプログラミングガイドにあなたを連れて行く「Xプログラミングガイド」をグーグルで検索することを強くお勧めします:)X=あなたの場合のビューコントローラ

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

于 2011-04-20T09:50:20.930 に答える
2

基本クラスに独自の NavigationController がある場合は、次のように記述できます。

[self.navigationController pushViewController:objMyViewController animated:YES];

基本クラスに UIViewController しかない場合は、次を使用します。

MyViewController * objMyViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:objMyViewController];
navController.navigationItem.leftBarButtonItem  = nil;  // make nil if you want
                                                        // to use it in next View
[self presentModalViewController:navController animated:YES];

現在、MyViewController にはナビゲーションがあり、MyViewController に次のような関数を記述して、別の viewController をプッシュできます。

-(IBAction)btnNext_click {
    SecondViewController * objSecondViewController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
    [self.navigationController pushViewController:objSecondViewController animated:YES];
}
于 2011-07-11T17:37:55.207 に答える