Как получить имя отправителя NSButton

У меня есть несколько NSButtons, прикрепленных к одному IBAction. Мне нужно различать внутри метода разные кнопки. Я пробовал следующее, но это не работает:

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

Как заставить это работать?


person node ninja    schedule 20.10.2010    source источник


Ответы (2)


-(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++)
person KevinDTimm    schedule 20.10.2010
comment
Это становится длинным, если есть много кнопок, поэтому я хочу использовать цикл for, чтобы избежать этого. - person node ninja; 20.10.2010
comment
Я не понимаю ту часть, где вы говорите, что формат недействителен. - person node ninja; 23.10.2010
comment
проверьте последние 3 строки моего ответа на исправленный цикл for - person KevinDTimm; 24.10.2010

отправителем в действии btnClicked является объект кнопки, который был нажат. Из этого вы сможете получить необходимую информацию

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

Если вы сохраните значение в sender.tag, вы также можете определить кнопку таким образом.

person Aaron Saunders    schedule 20.10.2010