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

What is the difference between a container view and a container view controller?

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

我一直在学习容器视图,苹果文档经常提到 'container view controller'。但是,我没有看到 class 调用 UIContainerViewController。故事板让我可以通过拖放的方式创建一种称为容器视图的特定类型的视图,并且标准视图控制器会随着此容器视图的创建而自动创建,并附加一个嵌入的 segue。

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

2 - 还是包含容器视图的原始视图控制器称为容器视图控制器?

3 - 苹果文档用这个语句定义了一个容器视图控制器 - "A container view controller contains content owned by other view controllers." 我不太明白它的意思。有人可以向我解释吗?

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

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

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

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

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

3 - "A container view controller contains content owned by other view controllers" :这个定义现在已经明确了。原始视图控制器显示的视图实际上是另一个视图控制器的一部分(拥有)。因此,根据定义,原始视图控制器是容器视图控制器,新创建的视图控制器作为子视图。