【发布时间】:2011-01-30 22:16:51
【问题描述】:
我必须将一个对象传递给一个按钮的动作......类似于
[myButton addTarget:self action:@selector(sendIt:MY_OBJECT) forControlEvents:UIControlEventTouchDown];
我无法设置变量并在方法上使用它,因为我在静态类上。
我该怎么做?
【问题讨论】:
标签: iphone iphone-sdk-3.0
我必须将一个对象传递给一个按钮的动作......类似于
[myButton addTarget:self action:@selector(sendIt:MY_OBJECT) forControlEvents:UIControlEventTouchDown];
我无法设置变量并在方法上使用它,因为我在静态类上。
我该怎么做?
【问题讨论】:
标签: iphone iphone-sdk-3.0
你不能,按钮动作的签名总是*) -(IBAction)methodToCall:(id)sender 其中sender 是你的按钮,或者任何调用动作的东西。
我无法设置变量并在方法上使用它,因为我在静态类上。
我不确定你的意思。
*) 与 Mac 相比,iPhone 上还有一些其他新的签名,但也没有一个允许传递对象。
【讨论】:
UIButton 无法将对象传递给事件选择器。您可以使用属性 tag 示例:
myButton.tag = SOMEBUTTON_ID;
您也可以将指向您对象的指针转换为 NSInteger 并将其分配给标记属性,但这种技术并不能解决对象的生命周期问题,并且将来此类代码可能会停止工作。
【讨论】:
我发现了一种方法。
您创建一个 UIButton 类,并在该类中声明一个与您要传递的对象类型相对应的公共变量。
当您创建按钮时,您使用该类并将对象存储在其属性中。
然后,当单击按钮时,您检索 ID,检索按钮和存储在其中的对象。
现在你有了对象......
【讨论】: