2012-05-31 2 views
3

У меня есть кнопка:Как читать тег кнопки в IBAction?

... 

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[rightButton setTitle:annotation.title forState:UIControlStateNormal]; 
rightButton.tag = myCustomNumber; 
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside]; 
... 

А вот IBAction:

.. 
-(IBAction)showDetails:(id)sender{ 

    // here I want to NSLOG button tag 

} 
... 

Как сделать это?

ответ

8

Просто отдать свой отправителем UIControl

-(IBAction)showDetails:(UIControl *)sender { 

    // here I want to NSLOG button tag 
    NSLog(@"%d",sender.tag); 

} 
2
NSLog("%d", (UIButton *)sender.tag); 

Отправитель - объект UIButton. Надеюсь, поможет. счастливым кодирования :)

2

Если ShowDetails всегда вызывается из UIButton вы могли бы изменить название метода:

- (IBAction)showDetails:(UIButton *)sender { 
     NSLog(@"%i", (UIButton *)sender.tag); 
} 

Не забудьте выполнить это изменение также в файле интерфейса

Однако, если вы используете showDetails из разных элементов IBAction, вам нужно будет изучить и проверить, отправлен ли отправитель является UIButton:

- (IBAction)showDetails:(id)sender { 
     if ([sender isKindOfClass:[UIButton class]] 
     NSLog(@"%i", (UIButton *)sender.tag); 
} 

Edit: Причиной этого является, что, как вы написали код, отправитель имеет динамический тип id и он не имеет каких-либо tag собственности.