Подтвердить что ты не робот

Как установить и получить тег UIButtons?

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

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

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

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

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

Есть другие идеи?

4b9b3361

Ответ 1

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

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

Изменить: Что касается сообщения "непризнанный селектор"...

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

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

Ответ 2

Я знаю, что это старый вопрос, и многие ответы на него были заданы в других вопросах, но он появился в поиске 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);
}

Ответ 3

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

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