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?

4

2 回答 2

10

这是四种完全不同的实现

  • addChildViewController在 iOS5 中用于执行 viewController 包含,这将使您能够轻松创建自己的NavigationCotrollersTabControllers仅在 iOS5 中可用

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

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

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

于 2012-06-25T09:41:16.113 回答
3

1) 作为 Apple 范式转变的一部分引入 iOS 5 以允许视图控制器层次结构,它只是在当前视图控制器前面放置一个视图控制器。您必须管理控制器的流程。

2) 与 one 相同,只是一次只能为一个视图控制器完成。实际上,这种方法已被[self presentViewController:animated:completion:]

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

于 2012-06-25T09:41:49.483 回答