我应该在新视图中嵌入视图控制器的视图吗?

Posted

技术标签:

【中文标题】我应该在新视图中嵌入视图控制器的视图吗?【英文标题】:Should I embed a view controller's view within a new view? 【发布时间】:2019-02-05 20:58:36 【问题描述】:

当向 Storyboard 中的现有视图控制器添加外部视图控制器时,您将使用“容器视图”。以编程方式添加一个时,您可以选择创建一个新的 UIView 以将外部 VC 的视图嵌入其中(复制容器视图),或者只是将外部 VC 的 .view 直接添加到现有的视图中。

以编程方式执行此操作时,这里认为哪种做法更好?一种对性能或可靠性的影响是否与另一种不同?

【问题讨论】:

【参考方案1】:

在 Storyboard 中使用容器视图可自动执行以下过程:

实例化视图控制器 添加为 childViewController 将其视图添加为容器视图的子视图(即主视图的子视图)

通过代码添加子视图控制器是同一个过程:

实例化视图控制器 添加为 childViewController 将其视图添加为当前视图的子视图,作为当前视图的另一个子视图的子视图

在 Storyboard 中使用容器视图的另一个好处是您可以获得可视化设计界面。

当然,有些人不喜欢 Storyboard / IB,而更喜欢纯代码方法。

真的,无论哪种方法最适合您的需求和开发风格。

【讨论】:

您对通过情节提要添加容器视图时发生的情况的解释正是我想要的。非常感谢。

以上是关于我应该在新视图中嵌入视图控制器的视图吗?的主要内容,如果未能解决你的问题,请参考以下文章

在导航控制器中嵌入子视图

在标签栏控制器中嵌入当前视图控制器

prepareForSegue 未在嵌入式 segue 中调用

AngularJS - 类似视图 - 我应该对多个控制器使用相同的视图吗?

当我将视图添加到另一个视图(并且这两个视图都由视图控制器控制)时,我真的应该使用 addChildViewController 吗?

我可以使用一个视图控制器来处理标签栏控制器中的多个视图吗