我正在尝试在iOS中制作一个测验应用。现在,即使我点击了错误的答案,我也面临着如何显示正确的答案。在这个应用程序中,在测验屏幕中包含几个可能答案的问题(四个答案选项),在这里我显示问题和uilabel中没有问题计数和uibuttons标题标签中设置的四个答案选项。我设置了每个按钮的标签值。在按钮动作中(这里我为所有四个按钮设置了常用按钮动作方法)我根据比较按钮标题标签字符串和正确答案数组值,设置背景图像以获得正确答案和错误答案。但即使我点击了错误的答案,我也无法解决如何显示正确答案的问题。
如果有人知道解决方案,请指导我,我将非常感谢你。
- (void)loadDictionary
{
quizzDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObjects:@"France, Allemagne, Royaume-Uni",@"1/5",@"Quels sont les trois pays formant la Triple Entente ?",@"France, Royaume-Uni, Russie",@"France, Allemagne, Royaume-Uni",@"France, Italie, Royaume-Uni",@"France, Italie, Royaume-Uni", nil],@"1",[NSArray arrayWithObjects:@"les Carpates",@"2/5",@"Lequel de ces chaînes de montagnes n'est pas français?",@"les Alpes",@"les Vosges",@"les Carpates",@"les Pyrénées", nil],@"2",[NSArray arrayWithObjects:@"la mer Baltique",@"3/5",@"Lequel de ces plans d'eau ne borde pas la France?",@"la mer Baltique",@"la Méditerrannée",@"La Manche",@"l'Atlantique", nil],@"3",[NSArray arrayWithObjects:@"Bordeaux, Marseille, Lille",@"4/5",@"Les trois plus grandes villes françaises sont",@"Paris, Lyon, Marseille",@"Paris, Lille, Marseille",@"Paris, Marseille, Bordeaux",@"Bordeaux, Marseille, Lille", nil],@"4",[NSArray arrayWithObjects:@"is gaining",@"5/5",@"Le territoire de la forêt française",@"is gaining",@"is shrinking",@"is staying the same",@"is unknown", nil],@"5", nil];
NSLog(@"the dic value = %@",quizzDict);
}
#pragma mark - Scroll - Slider
- (void)loadScrollViewContents
{
[questionslbl removeFromSuperview];
pageOfScroll = 0;
for (int i=0; i<[quizzDict allKeys].count;i++)
{
questionslbl = [[UILabel alloc] initWithFrame:CGRectMake(i*240, 0, 240, questionScrollView.frame.size.height)];
[questionslbl setTag:i];
[questionslbl setBackgroundColor:[UIColor clearColor]];
[questionScrollView addSubview:questionslbl];
[questionScrollView setBackgroundColor:[UIColor clearColor]];
NSArray *quesArr = [quizzDict valueForKey:[NSString stringWithFormat:@"%d",(i+1)]];
NSString *string = [quesArr objectAtIndex:2];
UILabel *templbl = [[UILabel alloc] initWithFrame:CGRectMake(0 , 0, 240, 42)];
[templbl setNumberOfLines:2];
[templbl setText:NSLocalizedString(string, @"")];
[templbl setTextColor:LIGHT_YELLOW_COLOR];
[templbl setFont:MRSEAVES_BOLD(17)];
[questionslbl addSubview:templbl];
}
[questionScrollView setContentSize:CGSizeMake((questionScrollView.frame.size.width*[quizzDict allKeys].count), questionScrollView.frame.size.height)];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
pageOfScroll = scrollView.contentOffset.x/scrollView.frame.size.width;
NSArray *quesArr = [quizzDict valueForKey:[NSString stringWithFormat:@"%d",(pageOfScroll+1)]];
NSString *countstr = [quesArr objectAtIndex:1];
[questionCountlbl setText:NSLocalizedString(countstr, @"")];
[questionCountlbl setFont:MRSEAVES_BOLD(22)];
NSString *ans1 = [quesArr objectAtIndex:3];
[answerBtnOne setTitle:NSLocalizedString(ans1, @"") forState:UIControlStateNormal];
[answerBtnOne.titleLabel setFont:MRSEAVES_BOLD(15)];
NSString *ans2 = [quesArr objectAtIndex:4];
[answerBtnTwo setTitle:NSLocalizedString(ans2, @"") forState:UIControlStateNormal];
[answerBtnTwo.titleLabel setFont:MRSEAVES_BOLD(15)];
NSString *ans3 = [quesArr objectAtIndex:5];
[answerBtnThree setTitle:NSLocalizedString(ans3, @"") forState:UIControlStateNormal];
[answerBtnThree.titleLabel setFont:MRSEAVES_BOLD(15)];
NSString *ans4 = [quesArr objectAtIndex:6];
[answerBtnFour setTitle:NSLocalizedString(ans4, @"") forState:UIControlStateNormal];
[answerBtnFour.titleLabel setFont:MRSEAVES_BOLD(15)];
}
- (IBAction)AnswerBtnAction:(UIButton *)sender
{
NSLog(@"Tag value = %ld",(long)[sender tag]);
NSArray *quesArr = [quizzDict valueForKey:[NSString stringWithFormat:@"%d",(pageOfScroll+1)]];
NSString *countstr = [quesArr objectAtIndex:0];
NSArray *optionsArr = [NSArray arrayWithObjects:answerBtnOne.titleLabel.text,answerBtnTwo.titleLabel.text,answerBtnThree.titleLabel.text,answerBtnFour.titleLabel.text, nil];
NSLog(@"optionsArr = %@",optionsArr);
int answeredOption = [optionsArr containsObject:countstr];
answeredOption ++ ;
if([sender tag] == 1001)
{
if([answerBtnOne.titleLabel.text isEqualToString:countstr])
{
[answerBtnOne setBackgroundImage:[UIImage imageNamed:@"quiz_list_green.png"] forState:UIControlStateNormal];
[answerBtnTwo setUserInteractionEnabled:NO];
[answerBtnThree setUserInteractionEnabled:NO];
[answerBtnFour setUserInteractionEnabled:NO];
[UIView animateWithDuration:0.25 animations:^{nextBtn.alpha = 1.0;}];
}
else
{
[answerBtnOne setBackgroundImage:[UIImage imageNamed:@"quiz_list_red.png"] forState:UIControlStateNormal];
}
}
else if([sender tag] == 1002)
{
if([answerBtnTwo.titleLabel.text isEqualToString:countstr])
{
[answerBtnTwo setBackgroundImage:[UIImage imageNamed:@"quiz_list_green.png"] forState:UIControlStateNormal];
[answerBtnOne setUserInteractionEnabled:NO];
[answerBtnThree setUserInteractionEnabled:NO];
[answerBtnFour setUserInteractionEnabled:NO];
[UIView animateWithDuration:0.25 animations:^{nextBtn.alpha = 1.0;}];
}
else
{
[answerBtnTwo setBackgroundImage:[UIImage imageNamed:@"quiz_list_red.png"] forState:UIControlStateNormal];
}
}
else if([sender tag] == 1003)
{
if([answerBtnThree.titleLabel.text isEqualToString:countstr])
{
[answerBtnThree setBackgroundImage:[UIImage imageNamed:@"quiz_list_green.png"] forState:UIControlStateNormal];
[answerBtnOne setUserInteractionEnabled:NO];
[answerBtnTwo setUserInteractionEnabled:NO];
[answerBtnFour setUserInteractionEnabled:NO];
[UIView animateWithDuration:0.25 animations:^{nextBtn.alpha = 1.0;}];
}
else
{
[answerBtnThree setBackgroundImage:[UIImage imageNamed:@"quiz_list_red.png"] forState:UIControlStateNormal];
}
}
else if([sender tag] == 1004)
{
if([answerBtnFour.titleLabel.text isEqualToString:countstr])
{
[answerBtnFour setBackgroundImage:[UIImage imageNamed:@"quiz_list_green.png"] forState:UIControlStateNormal];
[answerBtnOne setUserInteractionEnabled:NO];
[answerBtnTwo setUserInteractionEnabled:NO];
[answerBtnThree setUserInteractionEnabled:NO];
[UIView animateWithDuration:0.25 animations:^{nextBtn.alpha = 1.0;}];
}
else
{
[answerBtnFour setBackgroundImage:[UIImage imageNamed:@"quiz_list_red.png"] forState:UIControlStateNormal];
}
}
}
上面在vieDidLoad中调用了loadDictionary和loadScrollViewContents方法。
loadScrollView方法用于显示从右到左的幻灯片的问题。
我曾经在滚动委托方法中显示问题计数和四个答案选项。
最后的AnswerBtnAction是所有四个答案按钮的常用操作方法。
请点击错误的答案按钮,提出如何显示正确答案的建议。
答案 0 :(得分:-1)
首先,你的代码真的难以阅读。
其次,您应首先更改quizzDict
,这会使您的代码变得混乱。像这样的东西
aQuestion = @{@“questionNumber” : NSInteger,
@“question” : NSString,
@“answers” : NSArray of answers,
@“correctAnswer” : NSInteger};
quizzArray = NSArray of aQuestion;
然后您可以使用
访问aQuestion
中的每个值
quizzArray[i][@"questionNumber"]
这应该会让事情变得更容易。
当用户选择一个选项时,您可以设置UIButton.tag = 1 or 2 or 3 or 4
:
-(void)selectAnAnswer:(UIButton *)sender
{
if (sender.tag == [quizzArray[i][@“correctAnswer”] integerValue]) //i is number of question
{
//go to next question
} else {
//show correct answer
}
}