【问题标题】:How to compare two UIButtons for equality如何比较两个 UIButton 是否相等
【发布时间】:2014-09-20 09:18:28
【问题描述】:

我有两个 UIButton 实例,都从情节提要中获得:一个通过IBOutlet UIButton myStar 和一个作为-(IBAction) buttonClicked:(UIButton *) sender 的参数sender。如何比较myStarsender 而不会出现误报?尽管我从情节提要中拖放,但我相信它们是两个不同的实例,具有两个不同的ids。

我不能简单地比较标题或图像名称,因为我有多个具有相同标题和图像名称的此类按钮。

【问题讨论】:

  • 如果它们是同一个按钮,与== 进行简单的指针比较应该没问题。
  • 哇,这是真的。我不知道拖放是如何工作的。谢谢。
  • 在高层次上,基本上所有的“拖放”操作都是将实例变量指向故事板实例化的变量。

标签: ios objective-c uibutton


【解决方案1】:

我想你会发现sender == myStar是真的,因为它们是指向同一个按钮的指针,因为听起来你ctrl+拖动创建了一个IBOutlet UIButton,然后你拖放创建了一个IBAction buttonClicked(通过发件人)。

sender == myStar 总是,除非您调用 buttonClicked 并以编程方式将其他变量传递给它,或者如果界面生成器中的另一个按钮链接到该 IBAction。

【讨论】:

    【解决方案2】:

    sender == myStar 表示sendermyStar 的同一个实例,而不是具有(可能不小心)相同值的UIButton 的另一个实例。

    在上下文中,sender == myStar 的字面意思是“消息中的sendermyStar”。

    根据您的描述,我相信您希望确保两个指针指向同一个对象。在这种情况下,sender == myStar 是正确的做法。

    【讨论】:

      【解决方案3】:

      在比较每个 UIButton 的 set tag 属性之前,您可以使用它们的 tag 属性来比较两个 UIButton。请记住,标签属性必须是唯一的。

      if (myStar.tag == sender.tag)
      {
           code
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-18
        • 2021-05-23
        • 1970-01-01
        • 2021-09-14
        • 2023-03-11
        • 2010-12-05
        • 2016-03-06
        • 1970-01-01
        相关资源
        最近更新 更多