Ios 使用同一按钮的多个实例更改特定按钮的图像

Ios 使用同一按钮的多个实例更改特定按钮的图像,ios,cocoa-touch,button,multiple-instances,Ios,Cocoa Touch,Button,Multiple Instances,我正在制作一个小的iOS游戏,在同一个视图上有多个按钮实例。视图中充满了使用气泡图像的按钮 我需要能够在点击按钮时更改其中一个按钮的图像,并在5秒钟后将其更改回来,但我完全不知道如何操作D: 有人能提出一个可能的解决方案吗?当你的按钮被点击时,他们将执行他们的操作选择器。传递给动作选择器的sender参数实际上是点击的按钮,您可以利用该按钮更改其属性。要撤销更改,您可以使用dispatch\u after延迟二次更改 - (void)buttonWasTapped:(id)sender {

我正在制作一个小的iOS游戏,在同一个视图上有多个按钮实例。视图中充满了使用气泡图像的按钮

我需要能够在点击按钮时更改其中一个按钮的图像,并在5秒钟后将其更改回来,但我完全不知道如何操作D:


有人能提出一个可能的解决方案吗?

当你的按钮被点击时,他们将执行他们的操作选择器。传递给动作选择器的
sender
参数实际上是点击的按钮,您可以利用该按钮更改其属性。要撤销更改,您可以使用
dispatch\u after
延迟二次更改

- (void)buttonWasTapped:(id)sender
{
    __block UIButton *button = (UIButton *)sender; // This is the button that was tapped
    [button setImage:[UIImage imageNamed:@"blah"] forState:UIControlStateNormal];

    double delayInSeconds = 5.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [button setImage:[UIImage imageNamed:@"original_image"] forState:UIControlStateNormal];
    });
}

所有按钮都使用相同的动作吗?也就是说,当你点击每个按钮时,调用它们的方法是否相同?是的,它们都使用相同的方法。+1你的答案要好得多,所以我删除了我的。尽管我认为第一个setImage:forState应该突出显示uicontrol状态,不是吗?@bizsytes这取决于是为
UIControlEventTouchDown
还是
uicontroleventTouchInside
调用操作。如果是
UIControlEventTouchDown
,那么是的,使用
UIControlStateHighlighted
更有意义。我还是个新手,“\u block”是什么意思?@jamiemcalister
\u block
属性可以安全地修改GCD块内的
按钮
变量。是使用块的一个很好的概述。