Objective c 强制按钮交换图像

Objective c 强制按钮交换图像,objective-c,ipad,ios,Objective C,Ipad,Ios,我正在为iPad开发一个匹配程序,当用户选择一个按钮时,一个图像被“打开”,然后当用户选择第二个按钮时,另一个图像被打开。然后,我通过编程检查是否匹配,如果不匹配,则将两个按钮图像恢复到其初始状态 这是很好的工作,除非没有匹配,开关发生得太快,以至于你没有时间看到你“发现”了什么。我试着让它睡觉,但图像始终无法切换到未覆盖状态。。。想法 其代码如下: //Take action on the tap of one of the buttons if(isFirstSelection) {


我正在为iPad开发一个匹配程序,当用户选择一个按钮时,一个图像被“打开”,然后当用户选择第二个按钮时,另一个图像被打开。然后,我通过编程检查是否匹配,如果不匹配,则将两个按钮图像恢复到其初始状态

这是很好的工作,除非没有匹配,开关发生得太快,以至于你没有时间看到你“发现”了什么。我试着让它睡觉,但图像始终无法切换到未覆盖状态。。。想法

其代码如下:

//Take action on the tap of one of the buttons
if(isFirstSelection)
{
    firstSelection = [(UIButton *)sender tag];
    tempImageItem = [tileArray objectAtIndex:firstSelection];
    tempImage = [tempImageItem tileImage];
    firstSelectionName = [[NSString alloc] initWithString:[tempImageItem tileName]];
    [(UIButton *)sender setImage:tempImage forState:UIControlStateNormal];
    tempButton = sender;
    isFirstSelection = NO;       
}else{
    secondSelection = [(UIButton *)sender tag];
    tempImageItem = [tileArray objectAtIndex:secondSelection];
    tempImage = [tempImageItem tileImage];
    secondSelectionName = [[NSString alloc] initWithString:[tempImageItem tileName]];
    [(UIButton *)sender setImage:tempImage forState:UIControlStateNormal];

    //Two game pieces have been removed so check to see if they are a match
    if([firstSelectionName isEqualToString:secondSelectionName])
    {
        //Match found
        //do something

    }else{
        **//NO MATCH FOUND 
        [NSThread sleepForTimeInterval:3]; 
        //Display the checker board pieces again 
        [(UIButton *)sender setImage:[UIImage imageNamed:@"originalImage"] forState:UIControlStateNormal];** 

    }
    //Reset isFirstSelection Flag to YES for next selection
    isFirstSelection = YES;           
}

据我所知,您希望在3秒钟后放置按钮的原始图像,以便用户有时间查看发生了什么。 您应该查看NSTimer类来触发该代码

[(UIButton *)sender setImage:[UIImage imageNamed:@"originalImage"] forState:UIControlStateNormal];
从现在起3秒钟内。

对于“在X秒内运行此代码”,我更喜欢:

[self performSelector:@selector(spinWheel:) withObject:[NSNumber numberWithUnsignedInt:0] afterDelay:delay];

不需要乱搞计时器对象。

是的,同意。我不想只是旋转,但我只是在尝试不同的东西,希望能有效果。Bogatyr的解决方案非常有效!不客气!在stack overflow上,您通过接受适合您的答案来表达您的感激之情并帮助其他提问者。