我如何从UIButton获取名称?

时间:2014-04-25 08:41:34

标签: ios objective-c uibutton

我是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”选项,但我还没找到它。

任何帮助将不胜感激

4 个答案:

答案 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.
    }


}