Как установить и получить тег UIButtons? - PullRequest
10 голосов
/ 17 марта 2010

Как установить тег для кнопки программно?

Позже я хочу сравнить с тегами для вывода

Я пробовал это

-(IBAction)buttonPressed:(id)sender{
    NSLog(@"%d", [sender tag]);
}

но приложение просто вылетает.

Есть еще идеи?

Ответы [ 3 ]

13 голосов
/ 17 марта 2010

Вам нужно разыграть отправителя как UIButton:

-(IBAction)buttonPressed:(id)sender{
UIButton *button = (UIButton *)sender;
NSLog(@"%d", [button tag]);
}

Редактировать: По поводу сообщения "нераспознанный селектор" ...

Судя по вашему сообщению об ошибке, он не может вызвать метод buttonPressed. Обратите внимание, что в сообщении об ошибке он ищет «buttonPressed» (без двоеточия в конце), но метод называется «buttonPressed:». Если вы устанавливаете цель кнопки в коде, убедитесь, что селектор установлен на ButtonPressed: вместо просто ButtonPressed. Если вы устанавливаете цель в IB, xib может быть не синхронизирован с кодом.

Кроме того, ваш оригинальный код «[тег отправителя]» также должен работать, но для доступа к свойствам, относящимся к кнопкам, вам все равно придется привести его к UIButton.

5 голосов
/ 26 сентября 2012

Я знаю, что это старый вопрос, на который много раз отвечали на другие вопросы, но он попал в поиск в Google как второй сверху. Итак, вот ответ на вопрос, почему это сбой. Измените его на «button.tag»

-(void)myMethod
{
   UIButton *theButton = [UIButton buttonWithType:UIButtonTypeCustom];
   [theButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];

    theButton.tag = i;//or whatever value you want.  In my case it was in a forloop

}

-(void)buttonPressed:(id)sender
{
    UIButton *button = (UIButton *)sender;
    NSLog(@"%d", button.tag);
}
0 голосов
/ 21 января 2015

Нет необходимости в кастинге. Это должно работать:

-(IBAction)buttonPressed:(UIButton*)sender
{
NSLog(@"%d", [sender tag]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...