1

そのため、IB の複数のボタンに接続された IBAction があり、別の IBAction が呼び出されたときにこのアクションが起動されるようにします。また、2 番目のアクションからの int を [送信者タグ] として認識したいと考えています。

// viewController.m

-(IBAction)buttonPress {

 int getInter  = [sender tag]; 
 UIView *tmpView = [self.view viewWithTag:getInter];
 NSString *title = [(UIButton *)sender currentTitle]; 

}

次に、buttonPress を呼び出す必要がある別のアクションがあります。

 -(IBAction)secondButtonPress {
  int varInt = 1
  [self buttonPress: nil] <--- How do I pass varInt that buttonPress would recognise as a sender Tag here?

 }

ボタンをそのように作成し、コードを secondButtonPress に複製するだけでよいことに気付きましたが、それは面倒なようです...

 UIButton *tmpButton2 = (UIButton *)[self.view viewWithTag:varInt];

問題は、buttonPress をだまして押されたと認識させ、そのアクションの送信者タグとして変数を渡す方法があるかどうかです。ある意味で、ボタンが押されたと思わせるようにプログラムでだまします。

前もって感謝します。

4

3 に答える 3

2

私はそれを同じ IBAction に接続し、if ステートメントを実行して、そのタグが呼び出された場合に何かを実行しました。

今はシンプルに見えます!

-(IBAction)buttonPress {

 int getInter  = [sender tag]; 

   if ([sender tag] == 2) {
    //Do something just for that button.
   }

   else
   {
    UIView *tmpView = [self.view viewWithTag:getInter];
    NSString *title = [(UIButton *)sender currentTitle]; 
   }
}
于 2013-08-12T14:28:43.000 に答える
1
UIButton *btn1 = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 20, 20)];
[btn1 setTitle:@"Button 1" forState:UIControlStateNormal];
btn1.tag = 1;
[btn1 addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];

UIButton *btn2 = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 20, 20)];
[btn2 setTitle:@"Button 2" forState:UIControlStateNormal];
btn2.tag = 2;
[btn2 addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn2];

UIButton *btn3 = [[UIButton alloc] initWithFrame:CGRectMake(10, 90, 20, 20)];
[btn3 setTitle:@"Button 3" forState:UIControlStateNormal];
btn3.tag = 3;
[btn3 addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn3];

次のようにボタンクリックメソッドを記述し、その中にボタンタグを取得します..

-(IBAction)buttonClick:(id)sender {
    UIButton *btn = (UIButton *) sender;
    NSLog(@"%d",btn.tag);
}
于 2013-08-08T11:07:39.413 に答える
0

initWithNibName メソッドにタグを設定するだけです。サンプルに従って、それがあなたに役立つかどうかを確認してください!!

@property(nonatomic,strong)IBOutlet UIButton *btn1;
@property(nonatomic,strong)IBOutlet UIButton *btn2;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

       // Set the Tag
        self.btn1.tag=1;
        self.btn1.tag=2;

    }
    return self;
}

-(IBAction)selectedButtonClick:(id)sender {
    UIButton *btn = (UIButton *) sender;
    NSLog(@"selectedButton%d",btn.tag);
}
于 2013-08-08T11:47:08.067 に答える