Search code examples
objective-ccocoa-touchnsstringnsbuttonsender

How to get the sender's name of an NSButton


I have several NSButtons that are attached to a single IBAction. I need to differentiate inside the method between the different buttons. I tried the following, but it doesn't work:

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

How can this be made to work?


Solution

  • -(IBAction)buttonPressed:(id)sender
    {
        switch ( [sender tag] )
        {
        case 1:
        //blah blah blah
        break;
    
        case 2:
        //blah blah etc.
        break;
        }
    }
    

    I'm averse to doing the work for you, but....

    replace this line

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

    with this line

    if ([sender tag] == i) 
    

    Note too that the format of your for loop is invalid:

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

    s/b:

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