ios - 当有人选择错误时显示正确答案

标签 ios objective-c

好吧,我是 objective-c 的新手,并且使用了几个不同的教程来构建我的第一个测验应用程序。我已经完全完成了,我有点满意.. 然后我意识到,如果有人选择了错误的答案,它不会告诉他们正确的答案是什么。所以我一直在努力弄清楚。因此,我创建了一个新标签,该标签在选择答案之前一直处于隐藏状态。

有没有我可以使用的 if 语句,它可以利用我设置按钮的文本?例如:

switch (QuestionSelected) {
    case 0:
        QuestionText.text = [NSString stringWithFormat:@"Question One"];
        [Answer1 setTitle:@"Answer number 1" forState:UIControlStateNormal];
        [Answer2 setTitle:@"Answer number 2" forState:UIControlStateNormal];
        [Answer3 setTitle:@"Answer number 3" forState:UIControlStateNormal];
        [Answer4 setTitle:@"Answer number 4" forState:UIControlStateNormal];
        Answer1Correct = YES;
        break;

这是类别中的问题。我的答案 1-4 是按钮。而 Answer1Correct(取决于答案)是一个 BOOL 语句。

是否有一行我可以在 if 语句中使用来说明一些事情

if (Answer1Correct == YES) {
    CorrectAnswer.text = [NSstring stringWithFormat:"@?", Answer1]; (The question mark would be for text the button was set to. I know that @i, can be used for integers but I don't know if I can use the text a button was set to)

我知道这行不通,但我正在努力了解许多贵重元素的工作原理。例如,我看到的问题是在我的问题中我有 BOOL,它激活 BOOL 的唯一方法取决于他们选择什么。例如,如果他们在前面的语句中选择了 Answer2,它只会设置运行我的错误答案,因为这是我的按钮

-(IBAction)Answer1:(id)sender{

if (Answer1Correct == YES) {
    [self RightAnswer];
}
else{
    [self WrongAnswer];
}

接下来的三个按钮也是一样。

我知道我可能到处都是,但我开始这个的原因是尝试学习如何理解它。那么当他们选择错误时我如何确定什么是正确的以及我如何使标签相应地显示。我不是要求用勺子喂食,这是我的第一个功能齐全的应用程序,除了我自己尝试将东西放在一起并了解它们如何协同工作之外,它并没有真正的完整目的。因此,如果有一点解释或我可以在哪里阅读正在发生的事情,那么我将不胜感激,而只是一个答案。我可能需要提供更多信息,所以如果我问的没有意义,请询问。谢谢你们的帮助。

最佳答案

没有看到所有的代码是很困难的,但是一种方法是为每个问题设置一个具有正确值的数组,您需要对此设置强引用以确保它不会被解除分配圆弧。

在你的 .h 中

@property (nonatomic, strong)NSArray *correctAnswersArray;
@property (nonatomic, strong) IBOutlet UILabel *myLabelForIncorrectAnswer;

在你的.m

-(void)viewDidLoad{
self.correctAnswersArray   = [[NSArray alloc]initWithObjects:@"answer one", @"answer two", @"answer three", @"answer four",nil];
}

这可以引用使用

self.correctAnswersArray[i];

其中“i”是您需要从数组中获取的 int 值 - 请注意,数组的索引从 0 开始

关于您当前的条件语句,您可以在确认答案是否正确时使用数组设置标签文本

if (Answer1Correct == YES) {
            [self RightAnswer];
        }
        else{
            [self WrongAnswer];
self.myLabelForIncorrectAnswer.text = self.correctAnswersArray[0];
        }

依此类推修改每个'else'条件的数组索引号的每个条件

关于ios - 当有人选择错误时显示正确答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499583/

相关文章:

ios - Swift 3 类型 'Any?' 的值没有成员 'object'

ios - 如何在 swift 中以编程方式配置 openVPN?

ios - Swift - IOS - 限时功能

Web 应用程序中的 iOS 背景音频

objective-c - 为什么 NSString 'forgetting' 是什么?

ios - 在 iOS 中单击本地通知时不打开应用程序

ios - 如何在 UICollectionView 中设置 UICollectionViewCell 的垂直顶部对齐方式。 ( Objective-C )

javascript - 在 ios safari 和 chrome 中使用客户端 javascript 设置安全 cookie

ios - 在现有的 tableview 中使用 Objective-C 实现 UISearchController

iphone - AVAudioPlayer:MP3 文件无法在设备上播放,但可以在模拟器 (iOS 6) 中播放