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

时间:2015-02-12 06:25:37

标签: ios cocoa-touch storyboard container-view

我刚刚开始学习iOS编程,似乎并不理解这两个术语之间的区别。

我一直在学习容器视图,苹果文档经常引用“容器视图控制器”。但是,我看不到任何名为UIContainerViewController的类。故事板允许我通过拖放创建一种称为容器视图的特定类型的视图,并通过创建此容器视图自动创建标准视图控制器并附加嵌入segue。

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

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

3 - apple文档使用此语句定义容器视图控制器 - “容器视图控制器包含其他视图控制器拥有的内容”。我不太明白这意味着什么。有人可以向我解释一下吗?

如果需要任何其他信息,请发表评论,我将编辑我的问题以包含它。

2 个答案:

答案 0 :(得分:2)

更系统地回答我自己的问题,

1 - 新创建的视图控制器不是容器视图控制器。它被视为独立的视图控制器。 embed segue精确地指定了从原始视图控制器到新视图控制器的segue。但是,容器视图仍然是旧视图控制器的一部分,并且仅指示将在那里显示哪个其他视图控制器的视图。

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

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

答案 1 :(得分:0)

简而言之,容器视图控制器允许您将视图控制器放在其他视图控制器中。故事板只为您提供了一个方便的工具,可以使视图控制器自动放置在另一个视图控制器中。如果您要在代码中执行此操作,则需要创建两个视图控制器并删除一个vc的视图并将其放在另一个视图中,故事板正在做的就是为您节省麻烦。