addChildViewController和presentModelViewController有什么区别

时间:2012-06-25 09:35:33

标签: ios view pushviewcontroller presentmodalviewcontroller addchild

我知道有三种方法可以在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 ??

2 个答案:

答案 0 :(得分:10)

这是四种完全不同的实现

    在iOS5中使用
  • addChildViewController来进行viewController遏制,这样您就可以轻松创建自己的NavigationCotrollersTabControllers仅在iOS5中可用

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

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

  • pushViewControllerUINavigationController中用于将新的ViewController推送到viewcontrollers堆栈,

答案 1 :(得分:3)

作为Apple允许视图控制器层次结构的范例转换的一部分,iOS 5中引入了

1),它只是将视图控制器放在当前视图控制器之前。你必须管理控制器的流程。

2)与一个相同,除了一次只能对一个视图控制器完成。实际上,此方法已被[self presentViewController:animated:completion:]

取代

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