确定用户按下了哪个按钮

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) ...

以上是关于确定用户按下了哪个按钮的主要内容,如果未能解决你的问题,请参考以下文章

确定在 Tkinter 中按下了哪个按钮?

按下了啥按钮输入框C#

Qt - 我有一个 QPushButton QVector,哪个被按下了?

确定是否按下了取消按钮,其中InputBox变量声明为Double

确定按钮阵列中的最后一次按下[重复]

用户按下了 UIAlertView 上的哪个按钮?