插座连接和动作连接有什么区别?

时间:2012-07-07 11:11:33

标签: ios xcode

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

  • outlet connection
  • 动作连接
  • outlet collection connection

所有这些之间有什么不同?

5 个答案:

答案 0 :(得分:38)

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

Outlet ViewController talks to View by using Outlet。 View中的任何对象(UILabel,UIButton,UIImage,UIView等)都可以与ViewController建立Outlet连接。 Outlet在ViewController中用作@property,这意味着:
- 您可以使用插座设置对象(如更新UILabel的文本,设置UIView的背景图像等)。
- 你可以从一个对象中获取一些东西(比如UIStepper的当前值,NSAttributedString的当前字体大小等)

操作View pass on messages about view to ViewController by using Action(或者在技术术语中,ViewController将自身设置为Target,用于View中的任何Action。 Action是ViewController中的Method(与Outlet在ViewController中是@property不同)。每当某个对象(任何Event)发生在某个对象上(如按下UI按钮),Action就会将消息传递给ViewController。 Action(或Action方法)可以在收到消息后执行某些操作 注意:Action只能由UIControl的子对象设置;意味着你不能为UILabel,UIView等设置Action。

其中\何时使用Outlet或Action:
在iOS熟悉的最初几天,让Action和Outlet及其用法混淆是完全正常的。可以通过Outlet和Action完成很少的小事(比如获取按钮的文本/标题),但是它们是非常不同的。使用其中一个时,请牢记以上几点。

答案 1 :(得分:8)

当您想要更改控件的某些属性(即文本颜色或标签的文本大小)时,会使用

插座

当您想要检测触发时,即按下按钮时,会使用操作

答案 2 :(得分:2)

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

换句话说,出口给obj-c代码访问IB中的对象;而action会让xib控件访问obj-c代码。

答案 3 :(得分:2)

Outlet & Action visualisation

Outlet和Action连接是UIViewController与其UView通信的直接方式。例如,当View Controller需要设置UILabel的文本时,它会通过插座连接来设置。轻触View的UIButton对象时,它会使用操作连接将消息传递给View Controller。这意味着在View Controller中创建的插座被声明为@property,并通过声明方法创建操作。

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

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

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

答案 4 :(得分:0)

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

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

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