Ios 在结束之前,在每个案例中进行切换?

Ios 在结束之前,在每个案例中进行切换?,ios,objective-c,Ios,Objective C,现在我做了一个测验,利用开关提问。该开关有100个案例用于100个问题,当被调用时,它会随机选择一个案例来实施。因此,在我的ViewController上,我有一个标签,用于显示将调用的问题,以及四个按钮(针对每个可能的答案)。我的问题是。。有没有一种方法可以让我使用一个按钮,在开关内按下一个新的箱子?我希望能在我的退出按钮出现之前运行整个开关 以下是我所拥有的一个样本: -(void)Category1{ NSUInteger QuestionSelected= (arc4rando

现在我做了一个测验,利用开关提问。该开关有100个案例用于100个问题,当被调用时,它会随机选择一个案例来实施。因此,在我的ViewController上,我有一个标签,用于显示将调用的问题,以及四个按钮(针对每个可能的答案)。我的问题是。。有没有一种方法可以让我使用一个按钮,在开关内按下一个新的箱子?我希望能在我的退出按钮出现之前运行整个开关

以下是我所拥有的一个样本:

-(void)Category1{

    NSUInteger QuestionSelected= (arc4random() %100);

    switch (QuestionSelected) {
        case 0:
            QuestionText.text = [NSString stringWithFormat:@"First question here"];
            [Answer1 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            [Answer2 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            [Answer3 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            [Answer4 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            Answer1Correct = YES;
            CorrectAnswerDisplay.text = [NSString stringWithFormat:@"Correct Answer to be displayed"];
            break;
        case 1:
            QuestionText.text = [NSString stringWithFormat:@"First question here"];
            [Answer1 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            [Answer2 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            [Answer3 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            [Answer4 setTitle:@"Possible answer selection here" forState:UIControlStateNormal];
            Answer1Correct = YES;
            CorrectAnswerDisplay.text = [NSString stringWithFormat:@"Correct Answer to be displayed"];
            break;
如果你有答案,请解释答案是如何工作的。我对objective-c还是个新手,正在构建这个应用程序用于学习。还是我错过了一个显而易见的答案?如果可能的话,我希望使用一个按钮来实现这一点,因为我已将其设置为一旦您选择答案,Answer1-4按钮将消失,并且显示正确答案的CorrectAnswerDisplay标签。非常感谢你们的帮助!这个网站是我的救星,我一直在尽力帮助别人

编辑:以下是有关其当前运行方式的图片:


现在我把它设置为返回类别选择。正是这个正确/不正确的屏幕让我感到很难。我试图让最终结果成为下一个按钮,而不是下一个类别按钮,并在达到这一点之前仔细检查所有问题。

H2CO3关于删除
break
语句的说法是正确的。这样做将通过案例解决

话虽如此,我认为你试图以错误的方式解决这个问题。与硬编码所有这些值不同,您应该尝试使用字典数组的更动态的方法。每本词典都可以存储有关问题和可能答案的信息。这样,您可以用大致如下的方式替换整个交换机:

- (void)categoryOne
{
    NSUInteger questionSelected = arc4random_uniform((u_int32_t)self.arrayOfQuestions.count);

    NSDictionary *thisQuestion = self.arrayOfQuestions[questionSelected];

    [questionsLabel setText:thisQuestion[@"question"]];

    [answerOneButton setTitle:thisQuestion[@"answer1"] forState:UIControlStateNormal];
    [answerTwoButton setTitle:thisQuestion[@"answer2"] forState:UIControlStateNormal];
    [answerThreeButton setTitle:thisQuestion[@"answer3"] forState:UIControlStateNormal];
    [answerFourButton setTitle:thisQuestion[@"answer4"] forState:UIControlStateNormal];

    answer1Correct = YES;
    correctAnswerDisplay.text = thisQuestion[@"answer"];
}

作为补充说明,实例和实例方法应该使用以小写字母开头的camelCase,这是Objective C中的惯例,并且不需要使用
+[NSString stringWithFormat:
如果您只设置单个字符串的内容。

如果您想解决问题,只需删除
中断;
s。我认为切换根本不是您想要的。您的代码违反了DRY原则。(请参阅)你真的想要一个数据驱动的模型。你现在似乎喜欢更多的工作,但最终不会。例如,假设你有100个案例,但现在我们需要添加第五个答案。你打算怎么做?我有一些操作,无论他们得到的答案是否正确都会运行。例如,如果他们选择了正确的答案这是第一个,Answer1Correct BOOL设置为YES,它将运行-(void)RightAnswer,这将隐藏四个按钮并显示正确答案,并为他们的分数加一分。我不想失去显示正确答案的能力。如果有办法进行“下一步”某种类型的按钮继续切换将是理想的。答案有很多要告诉你的。你正在用UI编写一个应用程序。这些是事件驱动的。你不会推到另一个“状态”,你的应用程序不是线性的。用户输入会把你的苹果推到那里。除此之外,你的代码也不好。把Q&a放在一个数组中,并在上面使用索引。约翰·格林,我很感兴趣。对于这个精确的测验,一旦完成,它就完成了。它有780个问题已经打好并准备好了,并且是基于一个标准测试的,在几年内不会改变。但是我想o有更多的小测验要做,我正在努力学习效率。好吧,这对我来说有点意义。我更努力地想知道当这项测试运行时会发生什么,以帮助我进一步了解未来。因此,整合这一点。这需要我定义哪些额外的东西,为什么?我不熟悉NSDictionary,不是吗他的定义在.m范围内,还是需要更多的工作?很抱歉,我正试图更好地了解正在发生的事情,而且我仍然只有非常丰富的编程补救知识。非常感谢您花时间来解释这一点。我们正在使用NSDictionary来保存[@“问题”]作为这个问题的标签。我想我理解这一部分。这是NSUInteger,我想我对它的工作原理有点误解。我们正在设置一个名为questionSelected的NSUInteger,它将对类别中的问题进行随机化。arrayOfQuestions.count是什么?@JoeMarion您需要声明一个NSArray实例来存储所有di中的字典,其范围由您决定。NSDictionary只是一个数据结构,但不像数组那样按索引存储数据,字典将数据存储在键值关系中。这意味着当您使用
thisQuestion[@“answer”]
时,您需要字典为“答案”存储的值不,您不必设置arrayOfQuestions.count.count是NSArray的一个属性,它只返回数组中的对象数。在这种情况下,我们使用它来获取一个介于0和数组中对象总数之间的随机数。这样,当我们访问数组中该随机索引处的对象时,该索引将为ne可能超出数组边界(这会导致崩溃)@JoeMarion我不想让你像这样挂着,但是,我要离开电脑一段时间,但是看看你想做什么,我很乐意提供更多帮助。今晚晚些时候或者明天早上,我将制作一个示例项目来演示所有这些,并将其放在github上。