到达发件人对象的'tag'属性

时间:2012-01-08 06:48:07

标签: iphone ios xcode

我创建了一个IBAction,如下所示:-(IBAction) buttonTapped:(id)sender;并使用界面构建器将其连接到UIButton,问题是我无法执行NSLog(@"%d",sender.tag);之类的操作编译器给出了语法错误,标签属性不存在于id类型的对象中......但是当我执行NSLog(@"%@", sender);之类的操作时,控制台会显示有关按钮的信息以及其标签 ...所以问题是:如何通过发件人对象访问UIButton的tag属性?

3 个答案:

答案 0 :(得分:5)

您是否尝试过投射sender?例如:

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

答案 1 :(得分:3)

而不是强制转换,它通常会使代码更清晰,只是为了在您的操作声明中更具体:

 -(IBAction) buttonTapped:(UIButton*)sender;

您可以使用UIButton,UIControl,UIView或您需要的任何特异性级别。

答案 2 :(得分:2)

你必须强制转换它,因为编译器不知道对象的类型(因此是id类型),但运行时会知道。

所以,它类似于:

NSLog(@"%d", [(UIButton*)sender tag]);