快速,为啥我必须使用 IBaction 或 IBOutlet 在代码和 UI 之间进行通信?

Posted

技术标签:

【中文标题】快速,为啥我必须使用 IBaction 或 IBOutlet 在代码和 UI 之间进行通信?【英文标题】:In swift, why do I HAVE to use IBaction or IBOutlet to communicate between code and UI?快速,为什么我必须使用 IBaction 或 IBOutlet 在代码和 UI 之间进行通信? 【发布时间】:2016-07-24 07:52:47 【问题描述】:

我是编程新手,我正在尝试在 Swift ios 中理解这个概念。必须使用 IBaction 和 IBoutlet 将 UIButtons 和 UILabels 之类的东西连接到我的代码有什么好处?

他们为什么不让我们将 UI 对象设置为等于 button1 或 label1 之类的名称,以便我们可以在我的代码中使用这些名称来调用和改变它们?

【问题讨论】:

基本上,它们只是名称。感谢 Obj-C 运行时,nib 加载机制可以根据插座名称设置您的 ivars。 【参考方案1】:

你没有。 IBAction 和 IBOutlet 是在取消归档 nib 的 XML 字典时,使用 Interface Builder (IB) 创建的故事板和 xib 文件链接到实现文件的方式。但是,在代码中创建具有布局的视图和控制器是完全允许的,甚至是团队项目管理的常见模式。

就我个人而言,我确实喜欢使用 Interface Builder 来布置我的视图的视觉方面,它有助于减少我的控制器文件的大小,因为它允许我将我的布局和颜色设置放入 Storyboard 和 xibs 中。但是,一些开发人员会争辩说这实际上是一个缺点,因为它混淆了控制器的某些功能,使初学者无法理解。在团队工作时避免使用 Interface Builder 的理由很充分,但归根结底是策略和偏好。

【讨论】:

【参考方案2】:

它们只是 Xcode 用来链接代码和故事板/XIB 的标签。从功能上讲,它们什么都不做。它们可以帮助您作为开发人员了解什么是/不是/可以/不能在您的 UI 的视觉表示和驱动它的代码之间建立联系。

【讨论】:

以上是关于快速,为啥我必须使用 IBaction 或 IBOutlet 在代码和 UI 之间进行通信?的主要内容,如果未能解决你的问题,请参考以下文章

VAO 是不是同时记住 EBO/IBO(元素或索引)和 VBO?

VAO 中的 C++ GLSL 多个 IBO

为啥我必须使用 .self 来快速引用类型对象?

为啥我不能从情节提要创建 IBAction

为啥我的 IBAction 更改标签文本不起作用?

来自 tableViewCell 的快速@IBAction