【问题标题】:Getting two sender values instead of one for particular case?针对特定情况获取两个发件人值而不是一个?
【发布时间】:2015-01-10 15:18:23
【问题描述】:

我有一个代表 4 个可用答案的 4 个按钮的 IBAction,每次按下按钮时,我都会读取发件人 ID,然后它会判断答案是否正确等等。

现在我有一个特殊情况,当按下另一个按钮(与这 4 个按钮没有共同之处)时,它会等待其中两个答案,检查其中一个是否正确(我知道该怎么做)然后程序继续运行。

所以现在,我有:

- (IBAction)answerButtonPressed:(id)sender {
    NSString* answer= [[sender titleLabel] text];

   //checks if answer key is equal to a1 ( which is always the correct answer )
    if([[currentQuestionUsefulVariable valueForKey:@"a1"] isEqualToString:answer] ){

        correctQuestionsCount1 ++;
    }
    //answer is wrong
    else{
        wrongQuestionsCount1 ++;
    }
}

如您所见,我将答案字符串存储在名为 answer 的变量中

再一次 - 我只需要存储两个答案,并在按下这个特殊按钮时检查其中的两个。我当然会放一个布尔变量来指示它何时被按下,它会完成工作。

编辑: 两个答案是当我按下一个特定的百搭按钮时,它使用户可以从四个可用答案中选择两个。这就是为什么我需要这样做。对于任何其他情况,我一次只需要一个答案。

有什么想法吗?

【问题讨论】:

    标签: ios uibutton ibaction sender


    【解决方案1】:

    好吧,您将需要一个实例变量,其值在对象的整个生命周期中都保持不变,也许使用答案的可变数组是前进的方向:

    @interface MyViewController ()
    {
        NSMutableArray *_correctAnswers;
    }
    

    必须在viewDidLoad中初始化(其他选项可用):

    -(void)viewDidLoad {
        [super viewDidLoad];
        _correctAnswers = [NSMutableArray new];
    }
    

    然后开始将正确答案收集到这个数组中:

    - (IBAction)answerButtonPressed:(id)sender {
        NSString* answer= [[sender titleLabel] text];
    
       //checks if answer key is equal to a1 ( which is always the correct answer )
        if([[currentQuestionUsefulVariable valueForKey:@"a1"] isEqualToString:answer] ){
            [_correctAnswers addObject:answer];
        }
        //answer is wrong
        else{
            wrongQuestionsCount1 ++;
        }
    
        if ([_correctAnswers count] == 2) {
            // Do something?  It's not exactly clear what you want to do
            // when 2 correct answers have been given.
        }
    }
    

    注意:您可以转储correctQuestionsCount1,因为现在将是[_correctAnswers count]。此外,您还需要在某个时候重置数组。

    注意 2:您也可以开始收集错误答案,以便进行一些分析或禁用该按钮,以便用户无法重复回答错误的问题。

    【讨论】:

    • 我现在正在尝试,我会在几分钟内更新它。为了清楚起见 - 我有一个正在运行的程序,一次得到一个答案,一切都很好。两个答案是当我按下一个特定的百搭按钮时,它使用户可以从四个可用答案中选择两个。这就是为什么我需要这样做。对于任何其他情况,我一次只需要一个答案。如我所见,在(如果答案正确检查完成)之后,您将答案添加到数组中。我需要用两个答案填充数组,然后 -> 检查这两个答案中的一个是否可以。感谢您的快速响应!
    • 嗯,那我想我的回答错了。在我看来,您想要做的只是启用/禁用某些按钮以使答案更容易猜到?
    • 我在上面更新了我的评论。剩下的唯一事情是首先:(如果按下小丑按钮)-> 用两个答案填充数组,然后 -> 检查这两个答案中的一个是否正常。这就是我需要的一切。但是我需要在按下两个答案按钮时冻结程序。当只有一个被按下时,我不想跳到另一个问题。这就是问题所在。
    • 但是,如果您的 UI 有 4 个包含不同答案的按钮并且用户按下“简单模式”按钮,那么禁用两个错误答案按钮以便用户可以忽略是不够的他们(甚至不能选择他们)?听起来您不需要在其他任何地方进行任何更改?
    • 您刚刚进入“50/50”百搭案,这已经完成。是的,我只是删除了两个错误的答案。在我的情况下,您可以标记两个错误的答案,但仍然没有得到正确问题的分数。这就是游戏 :) 我现在正在工作的案例称为 Double Dip。你按下小丑,现在你可以标记两个答案,看看你是否答对了一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2019-03-04
    • 2018-05-19
    相关资源
    最近更新 更多