【问题标题】:What is the difference between addChildViewController and presentModelViewControlleraddChildViewController 和 presentModelViewController 有什么区别
【发布时间】:2012-06-26 13:21:14
【问题描述】:

我知道在 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??

【问题讨论】:

    标签: ios view pushviewcontroller presentmodalviewcontroller addchild


    【解决方案1】:

    这是四种完全不同的实现

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-08-06
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        • 2011-02-25
        • 2011-11-22
        • 2015-03-26
        相关资源
        最近更新 更多