我有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
的变量中再次 - 我只需要存储两个答案,并在按下此特殊按钮时检查其中的两个答案。我当然会设置一个布尔变量来指示何时按下它,它将完成工作。
编辑: 两个答案就是当我按下一个特定的小丑按钮时,它为用户提供了选择四个可用答案中的两个的优势。这就是我需要这样做的原因。对于任何其他情况,我一次只需要一个答案。
有什么想法吗?
答案 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:您也可以开始收集错误的答案,进行某些分析或者禁用该按钮,以便用户不能重复回答错误的问题。