Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 通过通用方法传递不同的UIButton。选择者/发送者是答案吗?_Objective C_Ios_Methods_Uibutton_Selector - Fatal编程技术网

Objective c 通过通用方法传递不同的UIButton。选择者/发送者是答案吗?

Objective c 通过通用方法传递不同的UIButton。选择者/发送者是答案吗?,objective-c,ios,methods,uibutton,selector,Objective C,Ios,Methods,Uibutton,Selector,我从Interface Builder添加了大约20个按钮,按下时,按钮的颜色会改变如下: -(IBAction)button1:(id)sender { if(playerTurn == YES) { button1.backgroundColor = [UIColor redColor]; } } 但是为了缩短时间,我似乎可以有一个通用的方法,这样当按下每个按钮时,就会运行这个方法。比如: -(IBAction)button1:(id)sender

我从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];
    }
}
不幸的是,我不知道怎么做。似乎选择者/发送者就是答案?但是我还没有做任何我觉得有用的教程。

你已经很接近了

- (IBAction)myActionWithAnArbitraryName:(UIButton *)sender
{
    if(playerTurn == YES) {
        [sender setBackgroundColor:[UIColor redColor]];
    }
}
你很接近

- (IBAction)myActionWithAnArbitraryName:(UIButton *)sender
{
    if(playerTurn == YES) {
        [sender setBackgroundColor:[UIColor redColor]];
    }
}

您可以链接单个操作的所有20个按钮

发送者知道按下了哪个按钮,所以直接更改发送者的背景颜色

-(IBAction)changeColour:(id)sender
{
    if (playerTurn == YES)
        sender.backgroundColor = [UIColor redColor];
}
注意:这不是经过测试的代码。但如果他们不这样做的话,我想这应该行得通:

UIButton *button=(UIButton *)sender;
button.backgroundColor = [UIColor redColor];

您可以链接单个操作的所有20个按钮

发送者知道按下了哪个按钮,所以直接更改发送者的背景颜色

-(IBAction)changeColour:(id)sender
{
    if (playerTurn == YES)
        sender.backgroundColor = [UIColor redColor];
}
注意:这不是经过测试的代码。但如果他们不这样做的话,我想这应该行得通:

UIButton *button=(UIButton *)sender;
button.backgroundColor = [UIColor redColor];

实际上,您可以对所有按钮使用一个iAction,并将发件人强制转换为UIButton:

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

    if (playerTurn == YES) {
        button.backgroundColor = [UIColor redColor];
    }
}

实际上,您可以对所有按钮使用一个iAction,并将发件人强制转换为UIButton:

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

    if (playerTurn == YES) {
        button.backgroundColor = [UIColor redColor];
    }
}