参数'发送者'之间有什么区别?并且没有'在iOS中进行IBAction

时间:2014-06-10 17:21:39

标签: ios objective-c xcode ios7

在创建新的IBAction方法时,我已经从故事板中的Button拖到我应该的头文件中。我注意到的Popup有一个参数下拉列表,提供3个选项,分别是无,发件人和发件人以及事件。 “无”和“发件人”之间的区别是什么,以及在什么情况下都会使用?

2 个答案:

答案 0 :(得分:4)

<强>无
您不需要知道有关触发操作的内容的任何信息,只需要触发操作即可。

<强>发件人
您不仅需要知道某个操作已被触发,还需要了解哪个对象触发了该操作。例如,如果您需要知道哪个按钮触发了某个操作以便更改其属性。

发件人和活动
您需要知道触发的操作,触发此操作的对象以及触发操作的事件类型。例如,如果你需要知道哪个按钮触发了某个动作才能改变它的属性,如果他们按下按钮vs touch up vs double-tap vs等你会改变它们,但是你不会这样做。我想为每种类型的事件创建一个单独的动作方法。

答案 1 :(得分:1)

Stonz2的答案非常清楚。

您可能需要发件人的一些示例:

假设您有一个计算器应用程序,并且您有数字按钮和操作员按钮。您可以编写-digitTapped操作和-operatorTapped操作,而不是为每个按钮编写不同的IBAction方法。

您可以为每个按钮添加标记值,然后在您的操作方法中询问发件人以查看其标记是什么。

另一个例子是滑块。您可以使用sender参数获取指向滑块的指针并获取它的值。

(BTW,默认情况下,IB使发送者的类型为id,这是一个匿名指针。我通常将类型更改为触发操作的对象的类型,如UIButton,UISlider等)