在特定情况下获取两个发件人值而不是一个?

时间:2014-11-13 13:03:08

标签: ios uibutton ibaction sender

我有4个按钮的IBAction代表4个可用答案,每次按下按钮我都会读取发件人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

的变量中

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

编辑: 两个答案就是当我按下一个特定的小丑按钮时,它为用户提供了选择四个可用答案中的两个的优势。这就是我需要这样做的原因。对于任何其他情况,我一次只需要一个答案。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

那么你需要一个实例变量,其值在对象的整个生命周期中持续存在,并且可能使用可变数组的答案是前进的方法:

@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:您也可以开始收集错误的答案,进行某些分析或者禁用该按钮,以便用户不能重复回答错误的问题。