addChildViewController和presentModelViewController有什么区别

我知道有三种方法可以在iOS中更改视图

1。

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

2。

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

3。

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

pushViewController需要导航控制器,我明白。 但是,何时使用addChildViewController和presentModalViewController?

这是四个完全不同的实现

  • 在iOS5中使用addChildViewController来执行viewController的包容,这将使您可以轻松创build自己的NavigationCotrollersTabControllers它的唯一可用的iOS5

  • addSubview是三个中的最低级别,这只是将一个视图添加到另一个视图,作为一个孩子

  • presentModalViewController用于在屏幕上以模态方式呈现viewController,因此覆盖旧的

  • UINavigationController使用pushViewController将新的ViewController推送到viewcontrollers堆栈,

1)在iOS 5中引入,作为苹果的范例转换的一部分,允许视图控制器层次结构,它只是把一个视图控制器放在当前的视图控制器之前。 你必须pipe理控制器的stream量。

2)与一个视图控制器相同,但一次只能为一个视图控制器执行。 实际上,这个方法已经被[self presentViewController:animated:completion:]所取代

3)将视图控制器添加到列表中,以便在点击“返回”后返回到前一个。 iOS将为您pipe理控制器的stream程。