0

次のコードにUIButtonの配列があります。私が抱えている問題は、各ボタンに関連付けられた固有のメソッドが必要なことです。現時点では、押されたボタンはすべて、action:@selector(buttonPressed:)

メソッドを各ボタンに接続する方法にこだわっています。

 // Create buttons
        NSMutableArray* buttonArray = [NSMutableArray array];
        NSArray * myImages = [NSArray arrayWithObjects:@"category-cafe-unsel.png", @"category-food-unsel.png", @"category-clothing-unsel.png", @"category-health-unsel.png", @"category-tech-unsel_phone.png" , @"category-tech2-unsel.png", @"catefory-theatre-unsel.png", @"category-travel-unsel.png", nil];

        // only create the amount of buttons based on the image array count
        for(int i = 0;i < [myImages count]; i++)
        {
            // Custom UIButton
            UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

            [btn setFrame:CGRectMake(0.0f, 20.0f, 52.0f, 52.0f)];
            [btn setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
            [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateNormal];

            [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
            [buttonArray addObject:btn];
        }

助けてくれてありがとう

:)

4

3 に答える 3

4

最良のオプションはsame method、すべてに使用するbuttonsことです。そのためには、を使用する必要がありますtags。したがって、各ボタンには独自のタグがあります。

btn.tag = i;

ここでtag numberは、が使用さdifferentiatingbuttonますcalled

そして、このメソッドでタグを取得できます。これは、switchステートメントを使用して実行することもできます。

-(void)buttonPressed:(UIButton*)sender
{
    if( sender.tag == 1 ){

    } else {

    }
}
于 2013-01-08T11:11:22.657 に答える
2

次のコードを使用します。

-(void)buttonPressed:(UIButton*)sender
{
    UIButton *btn = sender;
    for(int i = 0;i < [myImages count]; i++)
    {
       if (i == [btn tag]) {

       //Your code

       break;
       }
     }
}

それは完全にうまく機能しています。タグ値を取得したら、タグ値に従って操作を実行できます。

ありがとう、

ヘマン。

于 2013-01-08T11:37:32.167 に答える
1
[btn addTarget:self action:@selector(NSSelectorFromString([NSString stringWithFormat:@"button%d", i])) forControlEvents:UIControlEventTouchUpInside];

そして、対応するアクションは次のようになります。

-(void)button1:(UIButton*)sender
-(void)button2:(UIButton*)sender
-(void)button3:(UIButton*)sender
-(void)button4:(UIButton*)sender

などなど。

ただし、代わりに、アクションメソッドを1つだけにし、タグを使用してアクションメソッド内のボタンを区切ることを検討してください。

于 2013-01-08T11:13:29.797 に答える