容器视图和容器视图控制器有什么区别?

问题描述:

我刚开始学习iOS编程,似乎并不了解这两个术语之间的区别。容器视图和容器视图控制器有什么区别?

我一直在学习容器视图和苹果文档不断引用'容器视图控制器'。但是,我没有看到名为UIContainerViewController的类。故事板允许我通过拖放的方式创建一个称为容器视图的特定类型的视图,并且会创建一个标准视图控制器,并创建该容器视图并附带一个嵌入Segue。

1 - 这是新自动创建的视图控制器的容器视图控制器,因为它看起来像负责处理我刚刚创建的容器视图中显示的内容?

2 - 或者是原始视图控制器,它包含称为容器视图控制器的容器视图?

3 - 苹果文档使用此语句定义容器视图控制器 - “容器视图控制器包含其他视图控制器拥有的内容。”我不太明白它的意思。有人可以向我解释吗?

如果有任何额外的信息需要,请留下评论,我会编辑我的问题,包括它。

要回答我的问题有点更系统,

1 - 新创建的视图控制器不是容器视图控制器。它被视为一个独立的视图控制器。嵌入式segue明确指出,从原始视图控制器到新的视图控制器。但是,容器视图仍然是旧视图控制器的一部分,只能指示其他视图控制器的视图将显示在那里。

2 - 是的。这是因为原始视图控制器包含容器作为视图。它最终负责选择哪个视图控制器的视图显示在容器中。因此它执行该容器的控制器的职责。

3 - “容器视图控制器包含其他视图控制器拥有的内容”:现在已明确此定义。原始视图控制器显示实际上属于其他视图控制器(由其拥有)的视图。因此,根据定义,原始视图控制器是容器视图控制器,将新创建的视图控制器作为子视图。

简而言之,容器视图控制器允许您将视图控制器放入其他视图控制器中。故事板仅为您提供了一种方便的工具,可以使视图控制器自动放置在另一个视图控制器中。如果你用代码来做,你需要创建两个视图控制器,并删除一个视图的视图,并将其放置在另一个视图中,所有的故事板正在为您节省麻烦。

+0

但是,当通过故事板完成时,假设我创建了一个新项目并且有一个默认视图控制器。我创建并在默认视图控制器中放置一个容器视图,并且为容器创建了一个新的视图控制器,并且附加了一个嵌入segue,它是容器视图控制器 - 包含容器视图的原始默认视图控制器,还是它新的自动创建的视图控制器? – sosale151 2015-02-12 06:40:45

+0

新自动创建的一个,原始vc中的灰色只是一个占位符,向您展示它将在原始vc中的位置(但我想原始vc是一种容器vc,因为它包含子vc,一点语言在这里崩溃) – Fonix 2015-02-12 06:46:26