【问题标题】:Getting information from a button using (id)sender使用 (id)sender 从按钮获取信息
【发布时间】:2009-12-25 23:14:32
【问题描述】:

所以,这很简单,但我不知道该怎么做。要从按钮获取标题,您可以使用:

NSString *title = [sender titleForState:UIControlStateNormal];

但是,有没有办法从按钮中获取其他信息,例如“标签”或“提示”?

如果没有,如果按下不同的按钮,我希望能够执行不同的操作。所以,有一个“添加 1”按钮、一个“添加 2”按钮等,我用相同的“动作”来做略有不同的事情。这可以通过“If”语句解决,但我不确定如何进行比较。 (假设按钮标题为“WIN”):

if (title == @"WIN")

不起作用,我该如何进行比较?

(我也试过了:

NSString *compare = [[NSString alloc] initWithFormat:@"WIN"];
if (title == compare)
{
do something
}

)

【问题讨论】:

    标签: iphone objective-c button


    【解决方案1】:

    您应该始终使用 isEqualToString 比较字符串:

    if ([title isEqualToString:@"WIN"])
    

    有时使用 == 运算符可以正确比较字符串,例如当您比较常量字符串时,但您不应该在 Objective-C(或 Java)中使用 == 进行字符串比较。

    如果您使用 == 与字符串进行比较,那么它会比较它们的内存地址。如果您正在比较设置为某个常量的字符串,则 == 将为真。如果它们是相同的字符串,但内存地址不同,那么 == 将是错误的。

    在像 Python 这样的语言中,== 是重载的,所以你会得到你“期望”的行为。

    【讨论】:

    • 我还要指出,通常你没有两个按钮来做不同的事情,使用相同的动作。相反,您为按钮创建了两个单独的操作。这样您就无需检查有关按钮的任何信息(例如其标题)来确定您应该做什么。
    【解决方案2】:

    您可以在紧要关头使用的另一个选项是设置按钮的 tag 属性(在 IB 或代码中),然后检查

    if (sender.tag == 69) {//one button code} else {other button code}

    【讨论】:

      猜你喜欢
      • 2015-04-25
      • 2019-08-29
      • 2012-10-02
      • 2015-09-12
      • 2019-08-11
      • 2011-03-31
      • 2017-11-29
      • 2012-06-14
      • 2018-07-31
      相关资源
      最近更新 更多