我是xcode的新手,我正在尝试制作通用按钮按下方法。我希望它检查按钮的名称(而不是标题),然后我想做一些字符串操作来设置一些值。
我的ViewController.h中有一个按钮设置
@property (strong, nonatomic) IBOutlet UIButton *button_1_3;
然后我的ViewController.m
中有一个泛型方法- (IBAction)buttonPress:(id)sender
{
UIButton *bSender = (UIButton *)sender;
self.char1Text1.text = bSender.titleLabel.text; // this is the bit that I am not getting
}
所以我的一些按钮上会有相同的文字,我想看的是“button_1_3”。我希望有一个“bSender.name”选项,但我还没找到它。
任何帮助将不胜感激
答案 0 :(得分:3)
为所有按钮添加标签(这也可以在Interface Builder中完成)
button_1_0.tag = 0;
button_1_1.tag = 1;
button_1_2.tag = 2;
button_1_3.tag = 3;
在buttonPress:
方法中,查看tag
并显示其他文字
- (IBAction)buttonPress:(id)sender
{
UIButton *bSender = (UIButton *)sender;
switch (bSender.tag) {
case 0:
self.char1Text1.text = @"first text";
break;
case 1:
self.char1Text1.text = @"second text";
break;
case 2:
self.char1Text1.text = @"thrid text";
break;
case 3:
self.char1Text1.text = @"fourth text";
break;
default:
break;
}
}
答案 1 :(得分:2)
变量名称可供您轻松开发,但在编译应用程序时不会保留。
您需要在按钮及其名称之间创建映射。实现此目的的一种简单方法是为每个按钮分配tag
,然后在标签和名称之间创建映射。然后,您可以按_tagNameMapping[@(sender.tag)];
获取名称。
此外,由于标签是数字的,如果您选择,您可以switch(sender.tag)
并决定您的逻辑。
答案 2 :(得分:0)
只需调用下面的方法,它就能满足您的需求:
- (IBAction)buttonPress:(id)sender
{
NSString* str1 = [sender titleForState:UIControlStateNormal];
NSLog(@"%@", str1);
}
答案 3 :(得分:0)
- (IBAction)buttonPress:(id)sender
{
UIButton *bSender = (UIButton *)sender;
//uh, and don't forget to set button's outlet or it won't work
if(bSender==self.button_1_3){
//button pressed is button_1_3..do manipulation for that button.
}
}