确定用户按下了哪个按钮
Posted
技术标签:
【中文标题】确定用户按下了哪个按钮【英文标题】:Determining which button the user pressed 【发布时间】:2011-08-18 20:18:54 【问题描述】:我想在我的视图中显示三个按钮或图像,每个按钮或图像都代表一种“武器”。我如何知道用户选择了哪个按钮,并使用这些信息?
我以为我会使用一个函数来收集有关所选武器、其伤害等的信息,但我习惯于为视图中的每个按钮创建一个函数。我现在想知道如何确定这些按钮之间的区别,具体取决于选择了哪一个。
【问题讨论】:
感谢 Josh 的编辑,现在我什么都没做,我只是在想如何实现它 【参考方案1】:您应该创建带有一个参数的操作方法,即发送者:
- (IBAction)weaponPressed:(id)sender;
然后您可以根据与按钮相关的实例变量检查发送方:
if (sender == gunWeaponButton)
// Do something
else if (sender == mineWeaponButton)
// Do something
else
// Do something else
此外,您可以为按钮分配一个标签,它只是一个整数值:
gunWeaponButton.tag = 0;
然后你可以检查发件人的标签:
if (sender.tag == gunWeaponButton.tag)
// Do something
【讨论】:
在 ios 上,不应将 0 用于视图的tag
,因为这是默认值。
我建议使用标签而不是将发件人与实例变量进行比较,但正如@JoshCaswell 指出的那样,不要使用 0 作为标签,因为所有没有标签集的按钮都将匹配 if (sender.tag == 0)
。跨度>
谢谢,比较实例变量可以正常工作,但我找不到标签的解决方案:我有一个错误:“在非结构或联合的东西中请求成员'标签' ",在 if (sender.tag == ... 我已经声明了 2 个这样的按钮:IBOutlet UIButton *button1; 并将标签设置为 viewDidLoad 中的这些按钮。知道吗?
编译器不知道 id 类型的对象是否有标签属性。在这种情况下它确实如此,但您必须让编译器知道。您可以将方法签名中的 (id)sender
更改为 (UIButton *)sender
或将 sender 转换为 UIButton,如下所示:UIButton *senderButton = (UIButton *)sender; if (senderButton.tag == 1) ...
。以上是关于确定用户按下了哪个按钮的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 我有一个 QPushButton QVector,哪个被按下了?