在 IBAction 中按下时为 UIButtons 显示不同的颜色以进行测验

Showing different colours for UIButtons on press within IBAction for a Quiz

我有四个 UIButtons 代表 4 个答案。我已经设法将所有内容连接起来,并以绿色显示正确答案,以红色显示错误答案。

我唯一的问题是,当用户选择错误答案时,我会将所有答案灰显。我也想向用户展示正确答案。我试过 else if 语句但遗漏了一些东西,有什么建议吗?

-(IBAction)Answer1:(id)sender{

    if (Answer1Correct == YES) {
        [Answer1 setTitle:@"Correct" forState:UIControlStateNormal];
        [Answer1 setBackgroundColor:[UIColor greenColor]];
        [self RightAnswer];
    }
    else{

        [Answer1 setBackgroundColor:[UIColor redColor]];
        [Answer1 setTitle:@"Incorrect" forState:UIControlStateNormal];
        [Answer2 setBackgroundColor:[UIColor colorWithRed:102.0/255.0 green:102.0/255.0 blue:102.0/255.0 alpha:1.0f]];
        [Answer3 setBackgroundColor:[UIColor colorWithRed:102.0/255.0 green:102.0/255.0 blue:102.0/255.0 alpha:1.0f]];
        [Answer4 setBackgroundColor:[UIColor colorWithRed:102.0/255.0 green:102.0/255.0 blue:102.0/255.0 alpha:1.0f]];
        [self WrongAnswer];
    }
}

最好的方法是继承UIButton。创建 class QuizQuestionButton 这个Class会有方法 -setCorrectAnswer:(NSString *)correctAnswer-setRealAnswer:(NSString *)realAnswer

如果两者相同 - 将背景颜色设置为绿色,否则设置为红色。

-(void)setCorrectAnswer:(NSString *)correctAnswer {
     _correctAnswer = correctAnswer;
}

-(void)setRealAnswer:(NSString *)realAnswer {
    if (realAnswer == _correctAnswer) {
        self.backgroundColor = [UIColor greenColor];
    } else {
        self.backgroundColor = [UIColor redColor];
    }
}

另请阅读设计模式 - 策略。此模式可以帮助您避免 if-else 语句。

试试这个:

 if (Answer1Correct == YES) {
    [Answer1 setTitle:@"Correct" forState:UIControlStateNormal];
    [Answer1 setBackgroundColor:[UIColor greenColor]];
    [self RightAnswer];
}
else{

    [Answer1 setBackgroundColor:[UIColor redColor]];

    [Answer2 setBackgroundColor:[UIColor greyColor]];
    [Answer3 setBackgroundColor:[UIColor greyColor]];
    [Answer4 setBackgroundColor:[UIColor greyColor]];

    if(Answer2isCorrect)
      { [Answer2 setBackgroundColor:[UIColor greenColor]]; }
    else if(Answer3isCorrect)
      { [Answer3 setBackgroundColor:[UIColor greenColor]]; }
    else if(Answer4isCorrect)
      { [Answer4 setBackgroundColor:[UIColor greenColor]]; }
}

如果选择的答案是错误的,首先将所有其他按钮设置为灰色,然后找到正确的答案并将其更改为绿色。

您可能还希望在单击答案后禁用所有按钮以防止进一步单击。