Вопрос

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

for (int i = 0; i++; i < 7) {
    if (sender == [NSString stringWithFormat:@"button%i", i+1]) 
    {
        NSLog(@"sender is button %i", i+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 (int i = 0; i++; i < 7)

S/B:

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top