【问题标题】:What is the difference between the arguments 'sender' and 'none' for an IBAction in iOSiOS中IBAction的参数'sender'和'none'有什么区别
【发布时间】:2014-07-31 14:00:40
【问题描述】:

在创建新的 IBAction 方法时,我已经按照我应该的方式从情节提要中的 Button 拖到了我的头文件中。我注意到出现的弹出窗口有一个参数下拉列表,它提供了 3 个选项,即无、发件人、发件人和事件。 'none' 和 'sender' 有什么区别?分别在什么情况下使用?

【问题讨论】:

  • 阅读UIControl 的文档。概述中对此进行了介绍。点击“target-action”链接。

标签: ios objective-c xcode ios7


【解决方案1】:

Stonz2 的回答很好地涵盖了这一点。

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

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

您可以为每个按钮添加标签值,然后在您的操作方法中询问发送者以查看它的标签是什么。

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

(顺便说一句,默认情况下,IB将发送者的类型设置为id,这是一个匿名指针。我通常将类型更改为触发动作的对象的类型,例如UIButton,UISlider等)

【讨论】:

    【解决方案2】:


    您无需了解触发该操作的任何信息,只需知道该操作已被触发即可。

    发件人
    您不仅需要知道触发了某个动作,还需要知道触发该动作的对象的信息。例如,如果您需要知道哪个按钮触发了某个操作以更改其属性。

    发件人和事件
    您需要知道触发了该操作、触发该操作的对象以及触发该操作的事件类型。例如,如果您需要知道哪个按钮触发了某个操作以更改其属性,并且如果它们触摸按钮、触摸向上、双击、等等,您将以不同的方式更改它们,但您不希望为每种类型的事件创建单独的操作方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-21
      • 2014-02-23
      • 2014-03-21
      • 2023-03-17
      • 1970-01-01
      • 2018-06-06
      相关资源
      最近更新 更多