addChildViewController和presentModelViewController之间有什么区别?

11
我知道在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个回答

10

这是四种完全不同的实现

  • addChildViewController 在 iOS5 中用于 viewController 容器,可轻松创建自己的 NavigationCotrollersTabControllers,仅在 iOS5 可用。

  • addSubview 是三种中最低级的一种,将一个视图作为子视图添加到另一个视图中。

  • presentModalViewController 用于以模态方式在屏幕上呈现 viewController,因此覆盖旧的视图控制器。

  • pushViewControllerUINavigationController 中使用,将新的 ViewController 推入视图控制器堆栈中。


3

1) 作为苹果公司范式转变的一部分,iOS 5引入了视图控制器层级结构,只需将一个视图控制器放在当前视图控制器前面,你需要管理控制器的流程。

2) 与第一种方法相同,但一次只能对一个视图控制器进行操作。实际上,此方法已被 [self presentViewController:animated:completion:] 取代。

3) 将视图控制器添加到列表中,这样你就可以在点击“返回”后回到以前的页面。iOS会自动管理控制器的流程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接