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

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 に答える