【问题标题】:What is the difference between a container view and a container view controller?容器视图和容器视图控制器有什么区别?
【发布时间】:2015-04-12 19:00:58
【问题描述】:

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

我一直在学习容器视图,并且苹果文档经常提到“容器视图控制器”。但是,我没有看到名为 UIContainerViewController 的类。故事板让我可以通过拖放创建一种特定类型的视图,称为容器视图,并在创建此容器视图时自动创建标准视图控制器,并附加一个嵌入segue。

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

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

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

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

【问题讨论】:

    标签: ios cocoa-touch storyboard container-view


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 但是当通过情节提要完成时,假设我创建了一个新项目并且有一个默认视图控制器。我在默认视图控制器中创建并放置一个容器视图,并自动创建容器的新视图控制器并附加一个嵌入segue,它是容器视图控制器 - 包含容器视图的原始默认视图控制器或者是它新的自动创建的视图控制器?
      • 新自动创建的,原始vc中的灰色只是一个占位符,向您展示它将在原始vc中的位置(但我猜原始vc是一种容器vc因为它包含子 vc,所以这里有点语言分解)
      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 2015-07-10
      • 2016-06-12
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      相关资源
      最近更新 更多