【问题标题】:How to get the sender's name of an NSButton如何获取 NSButton 的发件人名称
【发布时间】:2010-10-20 18:42:20
【问题描述】:

我有几个连接到单个 IBAction 的 NSButton。我需要区分不同按钮之间的方法内部。我尝试了以下方法,但它不起作用:

for (int i = 0; i++; i < 7) {
    if (sender == [NSString stringWithFormat:@"button%i", i+1]) 
    {
        NSLog(@"sender is button %i", i+1);
    }
}

如何才能让它发挥作用?

【问题讨论】:

    标签: objective-c cocoa-touch nsstring nsbutton sender


    【解决方案1】:
    -(IBAction)buttonPressed:(id)sender
    {
        switch ( [sender tag] )
        {
        case 1:
        //blah blah blah
        break;
    
        case 2:
        //blah blah etc.
        break;
        }
    }
    

    我不愿意为你做这项工作,但是....

    替换这一行

    if (sender == [NSString stringWithFormat:@"button%i", i+1]) 
    

    用这条线

    if ([sender tag] == i) 
    

    还要注意你的 for 循环的格式是无效的:

    for (int i = 0; i++; i < 7)
    

    s/b:

    for (int i = 0; i < 7; i++)
    

    【讨论】:

    • 如果有很多按钮,这会变得很长,这就是为什么我想使用 for 循环来避免这种情况。
    • 我不明白你说格式无效的部分。
    • 检查我的答案的最后 3 行以获得更正的 for 循环
    【解决方案2】:

    btnClicked 动作中的发送者是被点击的按钮对象。从中您应该能够获得所需的信息

    -(IBAction) btnClicked: (id) sender {
      NSLog(@"Button clicked %@", sender);
      // Do something here with the variable 'sender'
    }
    

    如果您在sender.tag 中存储一个值,您也可以通过这种方式确定按钮

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-16
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多