检查UIButton是否被推送

时间:2013-11-30 04:41:24

标签: ios uibutton

我有四个UI按钮,我希望根据用户推送的按钮发生不同的事情。我已经尝试使用布尔值来检查按钮是否被按下,但它似乎没有工作。每个按钮的布尔代码基本上是:

 -(IBAction)FirstChoice:(id)sender
{
 wasClicked = YES;
}

然后在主要功能本身:

if(wasClicked)
{
    returnView.text = @"Test";
}

然而,当我按下任何按钮时,测试文本不会出现。

2 个答案:

答案 0 :(得分:1)

我认为您应该为所有按钮使用常见的“Touch up inside”插座功能...并为每个按钮设置不同的标签..例如

-(IBAction)FirstChoice:(id)sender // common "Touch up inside" action for all four buttons
{
 UIButton *btn=(UIButton *)sender; //assuming that you have set tag for buttons

      if(btn.tag==94)
        {
          //Do any thing for button 1
         }
       else if (btn.tag==93)
        {
          returnView.text = @"Test";
          //Do any thing for button 2
         }
       else if (btn.tag==92)
        {
          //Do any thing for button 3
         }
        else
           {
             //Do any thing for button 4

            }


}

答案 1 :(得分:0)

这与Vizllx的答案基本相同,但有点清楚。这假设您已为每个将调用tags的按钮设置了IBAction。由于这个方法将从UIButtons调用,我改变了参数的类型。如果您需要从其他类型的对象调用它,请将其更改为id并进行手动投射。

- (IBAction)FirstChoide:(UIButton *)sender
{
    const int BUTTON_TAG_1 = 92; // Identifier (tag) from a button
    const int BUTTON_TAG_2 = 93; // Another one
    // ...


    int tag = sender.tag; // tag returns an NSInteger, so it casts automatically to an int

    switch(tag)
    {
        case BUTTON_TAG_1:
            // Do stuff like setting strings to another elements, for example:
            // returnView.text = @"Test";
            break;

        case BUTTON_TAG_2:
            // Again...
            break;

        default:
            // Any other cases...
    }
}