0

现在我正在创建我的第一个测验应用程序并一直在尝试进入目标 c。现在我的界面设置减去一件事。我的应用程序中有五种不同类别的问题。我设置界面的方式我将按钮设置为隐藏或不隐藏,具体取决于 int。

例如我有一个类别:

- (IBAction)Category1:(id)sender{

    Category1.hidden = YES;
    Category2.hidden = YES;
    Category3.hidden = YES;
    Category4.hidden = YES;
    Category5.hidden = YES;

    Answer1.hidden = NO;
    Answer2.hidden = NO;
    Answer3.hidden = NO;
    Answer4.hidden = NO;

    Wrong1.hidden = YES;
    Wrong2.hidden = YES;
    Wrong3.hidden = YES;
    Wrong4.hidden = YES;

    SelectCategory.hidden = YES

    int Category1Question = rand() % 100;
    switch (Category1Question) {
        case 0:
            Question.text = [NSString stringWithFormat:@"Actual question in the quiz"]
            Right1.hidden = NO;
            Wrong2.hidden = NO;
            Wrong3.hidden = NO;
            Wrong4.hidden = NO;
            Answer1.text = [NSString stringWithFormat:@"Correct answer here"];
            Answer2.text = [NSString stringWithFormat:@"Wrong Answer"];
            Answer3.text = [NSString stringWithFormat:@"Wrong Answer"];
            Answer4.text = [NSString stringWithFormat:@"Wrong Answer"];
            break;
        case 1:
       //(etc. etc.)

        default:
            break;
    }

}

现在我想我可以弄清楚如何发送回类别选择页面,但我想直接发送到类别中的下一个随机问题,即使他们回答错误,也可能会显示带有正确答案的标签。我想我知道如何做不正确的答案部分,但有一个开关可以在同一类别中提出下一个问题。我认为,如果我创建了一个新的 int 并将其设置为 0,并且每次他们回答问题时,它都会在 int 中添加 1,然后是 if 语句,如果 int = 问题数,则返回到类别选择页面。问题是我不确定我会在哪里做这件事。这个应用程序完全是为了让我了解编码是如何工作的,到目前为止我所拥有的测验已经教会了我很多东西,但我不知道从哪里开始。

任何帮助表示赞赏,如果我没有提供适当的信息来帮助我,请告诉我。

4

1 回答 1

0
NSMutableArray *questionArray = [[NSMutableArray alloc] init];
for (int i = 1; i < 5; i++) {
    [questionArray addObject:[[NSNumber alloc] initWithInt:i]];    
}

for (int i = 0; i < 4; i++) {

int randomIndex = arc4random() % [questionArray count];
int Category1Question = [[questionArray objectAtIndex:randomIndex] intValue]; //cast to int from NSNumber
[questionArray removeObjectAtIndex:randomIndex];
    switch (Category1Question) {
        case 0:
            Question.text = [NSString stringWithFormat:@"Actual question in the quiz"]
            Right1.hidden = NO;
            Wrong2.hidden = NO;
            Wrong3.hidden = NO;
            Wrong4.hidden = NO;
            Answer1.text = [NSString stringWithFormat:@"Correct answer here"];
            Answer2.text = [NSString stringWithFormat:@"Wrong Answer"];
            Answer3.text = [NSString stringWithFormat:@"Wrong Answer"];
            Answer4.text = [NSString stringWithFormat:@"Wrong Answer"];
            break;
        case 1:
       //(etc. etc.)
} //end for 

稍微解释一下...第一部分创建一个 NSMutableArray 存储数字 1 - 4。我假设每个类别中只有四个问题,所以我选择了数字 1 - 4。第二个 for 循环迭代四次,或您在每个类别中的问题数。一旦进入循环,就会从数组中选择一个随机数 (1 - 4),然后将其删除。然后切换这个随机数,这会导致提出特定的问题。在这种情况下,该号码被称为Category1Question. 请注意,for 循环循环了四次。这意味着每次提出问题时,开关都会中断,然后迭代再次从顶部开始。从数组中选择一个新号码,将其删除,然后切换。这一次提出了一个新问题。这个过程将针对尽可能多的问题重复。这样可以确保所有问题都被问到,并且您仍然属于同一类别。- 希望这可以帮助。

于 2013-07-31T19:26:59.190 回答