【问题标题】:iPhone - how to pass an object to a button actioniPhone - 如何将对象传递给按钮操作
【发布时间】:2011-01-30 22:16:51
【问题描述】:

我必须将一个对象传递给一个按钮的动作......类似于

[myButton addTarget:self action:@selector(sendIt:MY_OBJECT) forControlEvents:UIControlEventTouchDown];

我无法设置变量并在方法上使用它,因为我在静态类上。

我该怎么做?

【问题讨论】:

    标签: iphone iphone-sdk-3.0


    【解决方案1】:

    你不能,按钮动作的签名总是*) -(IBAction)methodToCall:(id)sender 其中sender 是你的按钮,或者任何调用动作的东西。

    我无法设置变量并在方法上使用它,因为我在静态类上。

    我不确定你的意思。

    *) 与 Mac 相比,iPhone 上还有一些其他新的签名,但也没有一个允许传递对象。

    【讨论】:

      【解决方案2】:

      UIButton 无法将对象传递给事件选择器。您可以使用属性 tag 示例:

      myButton.tag = SOMEBUTTON_ID;
      

      您也可以将指向您对象的指针转换为 NSInteger 并将其分配给标记属性,但这种技术并不能解决对象的生命周期问题,并且将来此类代码可能会停止工作。

      【讨论】:

        【解决方案3】:

        我发现了一种方法。

        您创建一个 UIButton 类,并在该类中声明一个与您要传递的对象类型相对应的公共变量。

        当您创建按钮时,您使用该类并将对象存储在其属性中。

        然后,当单击按钮时,您检索 ID,检索按钮和存储在其中的对象。

        现在你有了对象......

        【讨论】:

        • 这是一种实现方式,尽管它在 Cocoa 中并不常见。
        猜你喜欢
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多