1

我有一张 UIButton 表:

UIButton *buttons [16];

我想要做的是在按下按钮时只突出显示一个按钮。

我在循环中创建、初始化它们:

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 回答