UIView 插座和 ChildViewController 有啥区别?

Posted

技术标签:

【中文标题】UIView 插座和 ChildViewController 有啥区别?【英文标题】:What is the difference between a UIView outlet, and a ChildViewController?UIView 插座和 ChildViewController 有什么区别? 【发布时间】:2016-05-18 04:39:44 【问题描述】:

假设我在父 UIView 中有一个容器视图。

在我的父 UIView 中将其引用为 Outlet 或以这种方式访问​​它有什么区别:

categoryContainerViewController = self.childViewControllers[0] as! CategoriesControllerView

【问题讨论】:

【参考方案1】:

视图和视图控制器是两个不同的东西 VIEW 是绘制到屏幕上的对象。它还可能包含在其中并随其移动的其他视图(子视图)。视图可以获取触摸事件并更改其视觉状态作为响应。视图是愚蠢的,不知道应用程序的结构,只是被告知以某种状态显示自己。

视图控制器不能直接绘制到屏幕上,它管理一组视图对象。视图控制器通常有一个带有许多子视图的视图。视图控制器管理这些视图的状态。视图控制器很智能,并且了解应用程序的内部工作原理。它告诉哑视图对象做什么以及如何展示自己。

现在您可以了解 View 和视图控制器了。

【讨论】:

【参考方案2】:

视图和视图控制器是两个完全不同的东西。

categoryContainerViewController = self.childViewControllers[0] as! CategoriesControllerView

尽管有这个名字,那是一个视图控制器

出口是视图

【讨论】:

【参考方案3】:

通俗地说:-

IBOutlet 将您的 interface builder 中的任何视图元素连接到附加的 swift class 文件。因此,您可以reference从界面构建器到 UIViewController 或 UIView Swift 类的 UIView 的任何子视图(例如,UILabel、UIButton)

在你的前任里

通过使用

categoryContainerViewController = self.childViewControllers[0] 一样!分类控制器视图

您正在获取对 ChildViewController 的引用,而不是任何视图

【讨论】:

以上是关于UIView 插座和 ChildViewController 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

从外部引用设置属性上的 .attributedText(可通过 NIB 加载的 UIView 内的插座访问)似乎失败

UiView.animateWithDuration 不为 Swift3 设置动画

使用 XIB 创建自定义 UIView

使用 AVPlayer 在 UIView 中播放时间流逝

为啥 swift uiview 不会连接到视图控制器?

如何在 ViewController 中将 AVPlayer 添加到 UIView