如何从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. } }