0

私のxibでは、ボタン1、2、3、4という名前の4つのUIボタンを使用しました。これらの4つのボタンは、異なる機能を実行する2つの4つの異なるIBActionメソッドに接続されています。

これで、「保存」というボタンがもう1つあります。これには、別のIBActionメソッドもあります。

- (IBAction)Save:(id)sender
{

}

ここで、上記の4つのUIボタンのどれがクリックされたかを確認したいと思います。

このために私はこの方法をチェックしてみました

- (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

save メソッドで、他の 4 つのボタンの Selected プロパティを確認します。ボタンを選択した状態に保ちたくないが、ある時点でクリックされたかどうかを確認したい場合は、プロパティ (配列など) を定義して、セッション中にクリックされたボタンを追跡し、このプロパティをチェックします。あなたの保存方法で。

于 2013-01-31T07:04:25.163 に答える