Как получить теги многих UIB-кнопок, но с тем же селектором действия - PullRequest
0 голосов
/ 30 января 2012

У меня есть метод, который показывает 10 (или более) кнопок UIB. У меня есть здесь код того, как я показал эти кнопки ..

-(void)showButtons{
for(int i = 0; i < 10; i++){
  UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
  button.frame = CGRectMake(x, y, 100, 94);  //Assume x and y have values
  **button.tag = i + 1000;**
  [button setBackgroundImage:[_cardImages objectAtIndex:i]  
      forState:UIControlStateNormal];
  [button addTarget:self action:@selector(myMethod:)   
      forControlEvents:UIControlEventTouchUpInside];
  [self.view add subview:button];
  [button release];

} }

-(IBAction)myMethod:(id)sender{
// I would like to print here button.tag, but I always get an error

}

Ответы [ 4 ]

3 голосов
/ 30 января 2012

Вам необходимо ввести здесь отправителя, поскольку типы id не имеют свойства tag .
Новый код будет

<code>
-(IBAction)myMethod:(id)sender{
   UIButton *pressedButton = (UIButton *)sender;
   NSLog(@"Tag of button pressed:%d",pressedButton.tag);
}
0 голосов
/ 30 января 2012

Определение вашего myMethod должно быть таким

Я использую тот же способ, чтобы получить тег отправителя.

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

Приведение типов не требуется, вы можете получить тег отправителя, не имеет значения, какой у него тип данных.

0 голосов
/ 30 января 2012

Попробуйте получить доступ к UIView UIButton, а затем получить доступ к его свойству TAG. Так изменив код Амреша Кумара:

-(IBAction)myMethod {
 UIButton *pressedButton = (UIButton *)sender;
 NSLog(@"Tag of button pressed:%d",pressedButton.view.tag);
}
0 голосов
/ 30 января 2012

Вы получите результат, напечатав значение sender.tag вместо button.tag

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