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