2012-05-31 28 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); 

sender是一个UIButton对象。希望能帮助到你。快乐编码:)

2

如果showDetails总是从一个UIButton叫你可以在方法的名称更改为:

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

记得要执行此也可以在界面文件中更改

但是,如果您使用来自不同IBAction元素的showDetails,则必须进行内省并检查发件人是一个UIButton:

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

编辑:这样做的原因是,在你的方式写的代码,发送者有一个动态类型id和它没有任何tag财产。