我怎样才能拥有超过两个'if'语句的IBAction?

时间:2011-02-09 03:20:18

标签: iphone objective-c ios

我正在创建一个测验应用,根据测验结果显示内容。现在我陷入困境。测验应用程序很简单,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

1 个答案:

答案 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对象的第二个示例对您来说可能是最简单的。每个字典都可以是具有适当属性的问题。然后你可以将这些值从字典中拉出来(你通过索引从数组中提取)。