0

選択して、もう一度タッチするまで押し続けることを目的とした多くのUIButtonを備えたuiviewcontrollerがあります。viewDidLoadで各ボタンを定義し、それらすべてに同じセレクターメソッド(tapButton)を指定します。

    [button1 addTarget:self action:@selector(tapButton:) forControlEvents:UIControlEventTouchUpInside];
    [button2 addTarget:self action:@selector(tapButton:) forControlEvents:UIControlEventTouchUpInside];
    ...

私がやりたいのは、tabButton:メソッドで、セレクターを使用して押されたボタンを判別し、次のように状態を変更することです。

- (IBAction) tapButton:(id)sender
{
  if ( sender.selected ) {
    sender.highlighted = NO;
    sender.selected = NO;
} else {
    sender.highlighted = YES;
    sender.selected = YES;
}
}

「sender.selected」または「sender.highlighted」を実際に実行することはできないため、これは単なる疑似コードであることに気付くでしょうが、それが私が達成しようとしていることです。

これを達成する方法はありますか?各UIButtonの状態を管理するために、30個の「tapButton」メソッド(つまり、私が持っているUIButtonの数)を作成するのは嫌です。

本当にありがとう!

4

3 に答える 3

2

tagこのように各ボタンの を設定できます

button1.tag = 1;
button2.tag = 2;
....

次に、セレクターで

- (IBAction) tapButton:(id)sender
{
   switch((UIButton*)sender.tag){
     case 1:
     .....
   }
}
于 2012-07-30T03:12:42.583 に答える
0
UIButton * selectedButton = [[UIButton allo]init];
/*for removing old highlight*/
selectedButton.higlighted = NO;
selectedButton = sender;
/*for setting new button highlight*/ sender.selected = YES

上記のコードが役立ちます。ここでは、最後のボタンの状態を保存するために新しいボタンを使用しています

于 2012-07-30T05:05:51.423 に答える
0

これにはスイッチケースを使用できます...または、アルファプロパティを使用してこれを実装することもできます...

-(IBAction) tapButton:(id)sender
{
    UIButton *btn = (UIButton *)sender;
    if ([btn isSelected]) 
    {
        btn.selected = NO;
        btn.alpha = 0.5;
    } else {
        btn.selected = YES;
        btn.alpha = 1;
    }
}
于 2012-07-30T07:12:23.007 に答える