11

iOSでビューを変更する方法は3つあることを知っています

1.1。

[self addChildViewController:thirdViewController]; 
[contentView addSubview:thirdViewController.view]; 

2.2。

First * sVC = [[First alloc] initWithNibName:@"First" bundle:[NSBundle mainBundle]]; 
[self presentModalViewController:sVC animated:YES];

3.3。

MyViewController *sampleViewController = [[[MyViewController alloc]initWithXXX] autorelease];       
[self.navigationController pushViewController: sampleViewController animated:true];

pushViewControllerには、私が理解しているナビゲーションコントローラーが必要です。ただし、いつaddChildViewControllerとpresentModalViewControllerを使用するのですか??

4

2 に答える 2

10

これらは4つのまったく異なる実装です

  • addChildViewControlleriOS5でviewControllerの封じ込めを行うために使用されます。これにより、独自のNavigationCotrollers、またはTabControllersiOS5でのみ使用可能な独自のコンテンツを簡単に作成できます。

  • addSubviewは3つの中で最も低いレベルです。これにより、子として別のビューにビューが追加されます。

  • presentModalViewControllerviewControllerを画面上にモーダルに表示するために使用されるため、古いものを上書きします

  • pushViewControllerUINavigationController新しいViewControllerをviewcontrollersスタックにプッシュするために使用されます。

于 2012-06-25T09:41:16.113 に答える
3

1)ビューコントローラーの階層を可能にするAppleのパラダイムシフトの一部としてiOS 5に導入されました。これは、ビューコントローラーを現在の階層の前に配置するだけです。コントローラのフローを管理する必要があります。

2)一度に1つのView Controllerに対してのみ実行できることを除いて、1と同じです。実際、この方法はに取って代わられました[self presentViewController:animated:completion:]

3)View Controllerをリストに追加して、「戻る」を押した後に前のコントローラーに戻ることができるようにします。iOSがコントローラーのフローを管理します。

于 2012-06-25T09:41:49.483 に答える