0

在我的 xib 中,我采用了 4 个 UI 按钮,分别命名为按钮 1、2、3 和 4。这四个按钮连接了两个执行不同功能的四个不同 IBAction 方法。

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

- (IBAction)Save:(id)sender
{

}

现在在这里我想检查上面 4 个 UIButton 中的哪一个被点击了。

为此,我尝试以这种方式检查

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

}

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

问候兰吉特。

4

4 回答 4

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;
}
}
于 2013-01-31T06:44:13.240 回答
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
   }
}
于 2013-01-31T07:04:47.990 回答
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
   }

}
于 2013-01-31T06:31:23.400 回答
0

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

于 2013-01-31T07:04:25.163 回答