我正在创建一个测验应用,根据测验结果显示内容。现在我陷入困境。测验应用程序很简单,4个答案和一个问题。让每个按钮将视图切换到下一个问题似乎是太多的代码,所以我想出了这个。如果按下每个按钮会改变问题和答案怎么办?我该怎么做?现在,我的回答'A'的代码是这样的:
-(IBAction)a {
switch(questionNumber)
{
case 0:
{
question.text = @"How Much Do You Use Suppressed Weapons?";
}
break;
case 1:
{
question.text = @"Do You Like Sleight of Hand?";
answerA.text = @"Yes";
answerB.text = @"No";
[answerC setHidden:YES];
[answerD setHidden:YES];
[answerButton3 setHidden:YES];
[answerButton4 setHidden:YES];
}
break;
}
}
这不起作用,所以我希望转到'if'语句路径。我如何为每个字母答案编码?我在想这样的事情:
- (IBAction)a { if(questionNumber = 0){ question.text = @“无论问题是什么”;
然后在每个问题之后它会在问题编号上加1。并且下次将其按下时,它会将问题文本更改为其他内容,并更改字母答案的标签。任何帮助将不胜感激。谢谢!!!
相关问题:Having more than one if statements in one IBAction in the .m file isn't working
答案 0 :(得分:1)
对于您要执行的操作,switch语句应该没问题,但是您的语法有点偏,请使用:
-(IBAction)a {
switch(questionNumber)
{
case 0:
question.text = @"How Much Do You Use Suppressed Weapons?";
break;
case 1:
question.text = @"Do You Like Sleight of Hand?";
answerA.text = @"Yes";
answerB.text = @"No";
[answerC setHidden:YES];
[answerD setHidden:YES];
[answerButton3 setHidden:YES];
[answerButton4 setHidden:YES];
break;
default:
break;
}
}
这方面的一个很好的例子可以在这里找到: http://www.techotopia.com/index.php/The_Objective-C_switch_Statement
但是,我认为更好的选择是创建一个具有所需属性的问题对象,然后以正确的顺序排列这些属性。然后你需要做的就是通过索引(questionNumber)拉出问题并将每个属性映射到你的界面。您甚至可以将值存储在plist中并读取,以便您可以轻松编辑/添加问题,而无需对任何内容进行硬编码。
以下是Reading a plist into an NSArray的快速教程。使用NSDictionary对象的第二个示例对您来说可能是最简单的。每个字典都可以是具有适当属性的问题。然后你可以将这些值从字典中拉出来(你通过索引从数组中提取)。