0

单击按钮时,我正在更改背景图像。这仅停留在突出显示的状态。单击按钮后,我想保留该绿色/红色背景图像。

如何在下面的代码中执行此操作?对不起,我是新手...

- (void)setCorrectAndWrongAnswerBackgroundImagesForOptions
{
int correctAns = [[currentQuestionDict objectForKey:kQuizAnswer] intValue];
int i;
int count = [_optionsButtonsArray count];
for (i=0; i<count; i++) 
{
    UIButton* optionButton = [_optionsButtonsArray objectAtIndex:i];
    NSString* optionBgImageName = [NSString stringWithFormat:@"optionBg_default%d",(i+1)];
    NSString* optionBgRedImageName = [NSString stringWithFormat:@"optionBg_red%d",(i+1)];
    NSString* optionBgGreenImageName = [NSString stringWithFormat:@"optionBg_green%d",(i+1)];

    if (optionButton.tag == correctAns) 
    {
        [optionButton setBackgroundImage:[UIImage imageNamed:[HAUtilities resourceNameForString:optionBgImageName]] forState:UIControlStateNormal];

        [optionButton setBackgroundImage:[UIImage imageNamed:[HAUtilities resourceNameForString:optionBgGreenImageName]] forState:UIControlStateHighlighted];


    }
    else {
        [optionButton setBackgroundImage:[UIImage imageNamed:[HAUtilities resourceNameForString:optionBgImageName]] forState:UIControlStateNormal];
        [optionButton setBackgroundImage:[UIImage imageNamed:[HAUtilities resourceNameForString:optionBgRedImageName]] forState:UIControlStateHighlighted];


    }
}

}

4

3 回答 3

0

在您的故事板中,当按钮被选中时,在右侧栏中,它们是一个带有“突出显示”选项的下拉菜单。单击此按钮并设置您希望按钮在突出显示(选择)时具有的属性,例如不同的背景图像。

于 2013-04-09T15:39:50.707 回答
0

你可以在 optionButton 选择器中做这样的事情

dispatch_async(dispatch_get_main_queue(), ^{
    [sender setHighlighted:YES];
});

这将使 optionButton 突出显示状态保持不变,直到您NO再次将其设置为。

于 2013-04-09T15:38:52.807 回答
0

您想在正常状态下更改颜色,此时您正在更改突出显示的状态。

更改您的代码如下:

- (void)setCorrectAndWrongAnswerBackgroundImagesForOptions
{
int correctAns = [[currentQuestionDict objectForKey:kQuizAnswer] intValue];
int i;
int count = [_optionsButtonsArray count];
for (i=0; i<count; i++) 
{
    UIButton* optionButton = [_optionsButtonsArray objectAtIndex:i];
    NSString* optionBgImageName = [NSString stringWithFormat:@"optionBg_default%d",(i+1)];
    NSString* optionBgRedImageName = [NSString stringWithFormat:@"optionBg_red%d",(i+1)];
    NSString* optionBgGreenImageName = [NSString stringWithFormat:@"optionBg_green%d",(i+1)];

    if (optionButton.tag == correctAns) 
    {
        [optionButton setBackgroundImage:[UIImage imageNamed:[HAUtilities resourceNameForString:optionBgGreenImageName]] forState:UIControlStateNormal];

    }
    else {

        [optionButton setBackgroundImage:[UIImage imageNamed:[HAUtilities resourceNameForString:optionBgRedImageName]] forState:UIControlStateNormal]; 

    }
}

}
于 2013-04-09T15:39:08.693 回答