检查从另一个函数中单击了哪个UIButton

时间:2013-01-31 06:20:30

标签: ios ios5 ios6 uibutton sender

在我的xib中,我有4个UI按钮,名为按钮1,2,3和4.这四个按钮连接了两个执行不同功能的四种不同的IBAction方法。

现在我还有一个名为“Save”的按钮。这也有一个不同的IBAction方法。

- (IBAction)Save:(id)sender
{

}

现在,我想检查上面的4个UIButtons中的哪一个已被点击。

为此我试着这样检查

- (IBAction)Save:(id)sender
{
   if(sender == button1)
   {
      //Do this
   }
   else if (sender == button2)
   {
       //Do this
   }

}

但这不起作用。我做错了什么。请帮帮我

此致 兰吉特。

4 个答案:

答案 0 :(得分:1)

您可以在界面构建器中为每个按钮设置标记值,并将所有按钮的操作设置为此方法

//设置全局变量标志。

   int flag;

- (IBAction)buttonClicked:(id)sender
{

switch ([sender tag])
{
    case 0:
         {
              flag =0;
             // implement action for first button

         }
        break;
    case 1:
        {
              flag =1;
            // implement action for second button

        }
        break;
    case 2:
        {
              flag =2;
            // implement action for third button

        }
        break;
        //so on
    default:
        break;
}
}

用于保存按钮

- (IBAction)save:(id)sender
{

switch (flag)
{
    case 0:
         {

             //  first button clicked

         }
        break;
    case 1:
        { 
            //  second button clicked

        }
        break;
    case 2:
        {
            //  third button clicked

        }
        break;
        //so on
    default:
        break;
}
}

答案 1 :(得分:1)

将班级ivar定义为

UIButton *selectedBtn;

然后在你的IBActions中

- (IBAction)button1:(id)sender {
    selectedBtn = sender // or button1
}

- (IBAction)button2:(id)sender {
    selectedBtn = sender // or button2
}

- (IBAction)button3:(id)sender {
    selectedBtn = sender // or button3
}

- (IBAction)button4:(id)sender {
    selectedBtn = sender // or button4
}

- (IBAction)Save:(id)sender
{
    //Check output of below statement to ensure you're getting a sender
    NSLog(@"Sender: %@", sender);

   if(selectedBtn == button1)
   {
      NSLog(@"Button 1 pressed");
      //Do this
   }
   else if (selectedBtn == button2)
   {
      NSLog(@"Button 2 pressed");
       //Do this
   }
    else if (selectedBtn == button3)
   {
      NSLog(@"Button 3 pressed");
       //Do this
   }
    else if (selectedBtn == button4)
   {
      NSLog(@"Button 4 pressed");
       //Do this
   }
}

答案 2 :(得分:0)

你可以试试这个:

- (IBAction)Save:(id)sender
{
    UIButton *pressedButton = (UIButton*)sender;

    //Check output of below statement to ensure you're getting a sender
    NSLog(@"Sender: %@", sender);

   if([pressedButton isEqual:button1])
   {
      NSLog(@"Button 1 pressed");
      //Do this
   }
   else if ([pressedButton isEqual:button2])
   {
      NSLog(@"Button 2 pressed");
       //Do this
   }

}

答案 3 :(得分:0)

在save方法中,选中其他4个按钮的Selected属性。如果您不想将按钮保持在选定状态,但只想查看它们是否在某个点被单击,则定义一个属性(例如数组)以跟踪在会话期间单击的按钮,并检查此属性在你的保存方法中。