如何在动作代码中引用按钮的名称?

时间:2013-05-02 09:11:02

标签: objective-c

所以,请注意,我是一个绝对的初学者。 在XCode中,是否可以在动作中引用按钮的名称?所以我想使用if语句来检查按钮的名称(我还用作按钮后面图像的名称)是否在已经创建的数组中。我在故事板中创建了按钮,将其链接到.h文件,如:

- (IBAction)s11:(id)sender;

到目前为止我在.m文件中的所有内容(与按钮有关)是:

- (IBAction)s11:(id)sender {
    if (  )
}

7 个答案:

答案 0 :(得分:1)

sender是指向您单击按钮的指针。所以你可以把它投射到UIButton并做你需要的任何事情 - 检查它的标题,标签,等等。

答案 1 :(得分:1)

由于您需要检查按钮的名称,请使用以下命令:

- (IBAction)s11:(id)sender {
       UIButton *btn = (UIButton *)sender;
       if ([btn.titleLabel.text isEqualToString:@"BUTTON_NAME"]){
            // do your stuff
       }
}

答案 2 :(得分:0)

您可以为每个按钮(属性检查器)分配“标记”属性,并在代码中检查该属性

- (IBAction)s11:(id)sender {
    switch(sender.tag) {
       case 1: {
          ...
       }
       case 2: {
          ...
       }

      ...

    }
}

答案 3 :(得分:0)

您可以使用titleForState:currentTitle方法。由于当前标题可能会因按钮状态而改变,因此我建议使用titleForState:

- (IBAction)s11:(UIButton *)button {
    NSString *title = [button titleForState:UIControlStateNormal];
    if ([self.theArray containsObject:title]) {
        // code
    }
}

这不是区分按钮的最佳方式,但是你要求它。最好是将这些按钮放在数组中。

答案 4 :(得分:0)

试一试....
您可以为每个按钮分配“标记”属性

- (IBAction)s11:(id)sender 
{
     int i = [sender tag];
     NSLog(@"Button tag : %i",i);
     if (i == 0)
     {
        NSLog(@"btn 1 clk");
     }
     if (i == 1)
     {
        NSLog(@"btn 2 clk");
     }
}

希望我帮助过。

答案 5 :(得分:0)

- (IBAction)s11:(id)sender {
     UIButton *btn=sender;
if ([yourArray containsObject:[btn titleForState:UIControlStateNormal]]) {

}

答案 6 :(得分:0)

如果要在实施文件中全局引用该按钮,您有两个选项:

选项A:为Button创建一个IBOutlet并使用指定的出口指针名称。 选项B:为您的UIButton提供一个唯一标记,然后通过它的标记访问它,使用:

UIButton *myButton = (UIButton*)[self.view viewWithTag:255];

这里的标签号是255,但您应该使用自己的标签号。