1

UIButton のテーブルがあります:

UIButton *buttons [16];

私がやりたいことは、ボタンが押された場合に 1 つのボタンだけを強調表示したままにすることです。

私は作成し、ループでそれらを初期化します:

for(int i = 0 ; i < 16 ; i++)
{
    // Initializing the buttons...
    [self performSelector:@selector(buttonSelected:) withObject:buttons[i] afterDelay:0.0];
}

それで :

- (void)buttonSelected:(UIButton*)sender {
    for(int i = 0 ; i < 16 ; i++)
    {
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            buttons[i].highlighted = NO;
        }];
    }
    [self doHighlight:sender];
}

- (void)doHighlight:(UIButton*)b {
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        b.highlighted = YES;
    }];
}

しかし、これは機能しません。これは最後の (16 番目の) ボタンのみを強調表示し、常に強調表示したままにします。

私は何をすべきか?ありがとう。

4

1 に答える 1

0

buttonSelected を次のように編集します。

- (void)buttonSelected:(UIButton*)sender {
    for(int i = 0 ; i < 16 ; i++)
    {
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            buttons[i].highlighted = NO;
            if(sender == buttons[i])[self doHighlight:sender];
       }];
    }
}
于 2013-07-30T13:23:21.597 に答える