出口连接和动作连接之间的区别是什么



当我试图在xib和文件所有者之间创建连接时,有几种类型可供选择:

  • 出口连接
  • 动作连接
  • 出口收集连接

所有这些之间有什么区别?

Outlet和Action是ViewController与其View交互的方式(或连接/中介)。虽然在iOS相识的最初几天,它们看起来可能很相似,但它们的用途不同:

出口ViewController talks to View by using Outlet。View中的任何对象(UILabel、UIButton、UIImage、UIView等)都可以通过Outlet连接到ViewController。Outlet在ViewController中用作@property,这意味着:
-您可以使用outlet设置对象的某些内容(如更新UILabel的文本、设置UIView的背景图像等)
-你可以从一个对象中得到一些东西(比如UIStepper的当前值,NSAttributedString的当前字体大小等)

操作View pass on messages about view to ViewController by using Action(或者在技术术语中,ViewController将自己设置为视图中任何ActionTarget)。Action是ViewController中的Method(与Outlet不同,Outlet在ViewController中是@property)。每当对象发生什么事情(任何Event)(比如点击UI按钮),Action就会将消息传递给ViewController。Action(或Action方法)可以在收到消息后执行某些操作
注意:操作只能由UIControl的子对象设置;意味着您不能为UILabel、UIView等设置Action。

何处\何时使用出口或操作:
在熟悉iOS的最初几天,混淆Action和Outlet及其用法是很正常的。Outlet和Action都可以做一些小事情(比如获取按钮的文本/标题),但除此之外,它们非常不同。在使用一个或另一个时,请记住以上几点。

Outlet用于更改控件的某些属性,即标签的文本颜色或文本大小。

操作用于检测触发器,即按下按钮时。

出口为类(通常是视图控制器)提供了对xib中子视图的引用。该操作提供了一个方法,当用户激活时,控件(通常也是xib上的子视图)将调用该方法。

换句话说,出口赋予obj-c代码对IB中对象的访问权限;而该操作赋予xib控件对obj-c代码的访问权限。

出口&动作可视化

出口和操作连接是UIViewController与其UView通信的直接方式。例如,当视图控制器需要设置UILabel的文本时,它将通过出口连接进行设置。当点击视图的UIButton对象时,它会使用动作连接将消息传递给视图控制器。这意味着在视图控制器中创建的出口被声明为@属性,并且通过声明方法来创建操作。

当您需要将代码中的消息发送到Xcode故事板中的用户界面对象时,会创建出口连接。对象可以是控件,如按钮、滑块和开关,也可以是故事板中定义的任何其他对象,如标签和进度条。例如,当您的代码确定标签应该显示一些文本时,代码会通过出口发送一条消息,告诉标签显示新文本。

当您需要将消息从情节提要中的控件发送到代码时,会创建操作连接。控件是一个用户界面对象,当用户操纵该对象时,它会导致操作或可见结果。例如,当用户点击一个按钮时,该按钮会向代码发送一条操作消息,告诉它执行适当的方法。可用于创建动作连接的控件的其他示例包括文本字段、滑块和开关。

参考文献:1.https://medium.com/@GanChau/outlet-vs-action-connections-in-xcode-b5331fb233a1

Outlet连接:是连接一个属性或实例变量,从当前文件所有者实例到xib,当这个xib将被反序列化时,将连接到文件所有者对象

出口操作:将目标/操作从xib添加到所有者类的指定出口(视图)

出口集合:类似于出口,但它将一组视图连接到单个出口var

最新更新