调用IBAction时:
-(IBAction) onClick1: (id) sender;
发件人传递了什么?由于它通过IB连接,我不太确定。我的问题是如何让按钮的文本成为传递的对象(最有可能是NSString),以便我可以在动作实现中调用它。
-(IBAction) onClick1: (id) sender {
NSLog(@"User clicked %@", sender);
// Do something here with the variable 'sender'
}
答案 0 :(得分:60)
sender
应该是启动操作的控件。但是,您不应该假设其类型,而应将其定义为id
。而是在实际方法中检查对象的类,如下所示:
- (IBAction)onClick1:(id)sender {
// Make sure it's a UIButton
if (![sender isKindOfClass:[UIButton class]])
return;
NSString *title = [(UIButton *)sender currentTitle];
}
答案 1 :(得分:25)
实际上是:
-(IBAction) onClick1: (id) sender {
NSLog(@"User clicked %@", sender);
// Do something here with the variable 'sender'
}
sender
不是NSString
,而是id
类型。它只是发送事件的控件。因此,如果在单击按钮时触发您的方法,则会发送单击的UIButton
对象。您可以通过编程方式访问所有标准UIButton
方法和属性。
答案 2 :(得分:14)
-(IBAction)onClick:(id) sender {
UIButton *btn = (UIButton *)sender;
//now btn is the same object. And to get title directly
NSLog(@"Clicked button: %@",[[btn titleLabel] text]);
}
答案 3 :(得分:10)
只需编写以下代码
即可-(IBAction) getButtonTitle:(id)sender
{
UIButton *button = (UIButton *)sender;
NSString *buttonTitle = button.currentTitle;
NSLog(@"Button Title %@",buttonTitle);
}
多数民众赞成......你做完了!!!
答案 4 :(得分:2)
发件人应该被定义为类型id,而不是int或NSString。发件人是调用该方法的实际对象;如果你把它连接到一个按钮,它将是一个UIButton,如果它是一个文本字段,一个UITextField。您可以使用它来从控件获取信息(例如文本字段的当前字符串值),或者如果您有多个控件连接到同一个操作方法,则将其与IBOutlet实例变量进行比较。
答案 5 :(得分:2)
您可以使用以下内容获取按钮标签并确定单击了哪个标签:
NSLog(@"Clicked button: %@",[[sender titleLabel] text]);
要回答你的问题,id是来自IB的对象。
答案 6 :(得分:1)
从按钮获取文字:
NSLog(@"Date::%@",[btn titleForState:UIControlStateNormal]);