如何从UIButton获取名称?

我是新来的Xcode,我试图做一个通用的button按下的方法。 我希望它检查button的名称(不是标题),然后我想做一些string操作来设置一些值。

我在我的ViewController.h中有一个button设置

@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将有相同的文本,我想看到的是“button_1_3”。 我希望有一个“bSender.name”选项,但我还没有find它。

任何帮助,将不胜感激

variables名称是为了您的简单开发,但在编译应用程序时不会保留。

您需要在button和名称之间创build一个映射。 实现这一点的一个简单方法是为每个button分配一个tag ,然后在标签和名称之间创build一个映射。 您可以通过_tagNameMapping[@(sender.tag)];获取名称_tagNameMapping[@(sender.tag)];

而且,因为标签是数字的,所以你可以switch(sender.tag)并决定你的逻辑,如果你select的话。

给你所有的button一个标签(这也可以在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; } } 

只需调用下面的方法,它会给你你所需要的:

 - (IBAction)buttonPress:(id)sender { NSString* str1 = [sender titleForState:UIControlStateNormal]; NSLog(@"%@", str1); } 
 - (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. } }