0

Interface Builderから約20個のボタンを追加しましたが、押すと次のように色が変わります。

-(IBAction)button1:(id)sender
{
    if(playerTurn == YES)
    {
        button1.backgroundColor = [UIColor redColor];
    }
}

しかし、物事を短くするために、私は一般的な方法を持っているように思えます。そのため、押されたときにすべてのボタンがその方法を実行します。何かのようなもの:

-(IBAction)button1:(id)sender
{
    //Go to method and make this button red
}
-(void)changeColour
{
    if(playerTurn == YES)
    {
        buttonThatWasSent.backgroundColor = [UIColor redColor];
    }
}

残念ながら、その方法がわかりません。セレクター/送信者が答えのようですか?しかし、私は自分が見つけたチュートリアルをうまく機能させることができませんでした。

4

3 に答える 3

2

あなたはかなり近かったです!

- (IBAction)myActionWithAnArbitraryName:(UIButton *)sender
{
    if(playerTurn == YES) {
        [sender setBackgroundColor:[UIColor redColor]];
    }
}
于 2012-12-15T14:58:02.327 に答える
1

1 つのアクションの 20 個のボタンすべてをリンクできます。

送信者はどのボタンが押されたかを知っているので、送信者の backgroundColor を直接変更します。

-(IBAction)changeColour:(id)sender
{
    if (playerTurn == YES)
        sender.backgroundColor = [UIColor redColor];
}

注: これはテスト済みのコードではありません。しかし、彼らがこのようにしようとしないのであれば、うまくいくはずです:

UIButton *button=(UIButton *)sender;
button.backgroundColor = [UIColor redColor];
于 2012-12-15T14:58:38.743 に答える
1

実際には、すべてのボタンに対して単一の IBAction を使用し、送信者を UIButton としてキャストするだけです。

- (IBAction)buttonPressed:(id)sender {
    UIButton *button = (UIButton *)sender;

    if (playerTurn == YES) {
        button.backgroundColor = [UIColor redColor];
    }
}
于 2012-12-15T15:01:22.840 に答える