Iphone 到达';标签';发送方对象的属性
我创建了一个像这样的Iphone 到达';标签';发送方对象的属性,iphone,ios,xcode,Iphone,Ios,Xcode,我创建了一个像这样的iAction:-(iAction)按钮:(id)发送者并使用interface builder将其连接到ui按钮,问题是我无法执行类似NSLog(@“%d”,sender.tag)的操作编译器给我的语法错误是,类型为id的对象中不存在标记属性。。。但是,当我执行类似于NSLog(@“%@”,sender)的操作时控制台显示有关按钮及其标签的信息。。。所以问题是:如何通过sender对象访问UIButton的tag属性?您是否尝试过强制转换sender?例如: NSLog(@
iAction
:-(iAction)按钮:(id)发送者
并使用interface builder将其连接到ui按钮
,问题是我无法执行类似NSLog(@“%d”,sender.tag)的操作代码>编译器给我的语法错误是,类型为id
的对象中不存在标记属性。。。但是,当我执行类似于NSLog(@“%@”,sender)的操作时代码>控制台显示有关按钮及其标签的信息。。。所以问题是:如何通过sender对象访问UIButton
的tag属性?您是否尝试过强制转换sender
?例如:
NSLog(@"%d", ((UIButton *)sender).tag);
您是否尝试过铸造发送者
?例如:
NSLog(@"%d", ((UIButton *)sender).tag);
您必须强制转换它,因为编译器不知道对象的类型(因此id类型),但运行时会知道
所以,它类似于:
NSLog(@"%d", [(UIButton*)sender tag]);
您必须强制转换它,因为编译器不知道对象的类型(因此id类型),但运行时会知道
所以,它类似于:
NSLog(@"%d", [(UIButton*)sender tag]);
与强制转换不同的是,它通常使代码更清晰,只是为了在操作声明中更具体:
-(IBAction) buttonTapped:(UIButton*)sender;
您可以使用UIButton、UIControl、UIView或您需要的任何特定级别 与强制转换不同,它通常会使更干净的代码在动作声明中更加具体:
-(IBAction) buttonTapped:(UIButton*)sender;
您可以使用UIButton、UIControl、UIView或您需要的任何特定级别