【问题标题】:How can I have an IBAction that has more than two 'if' statements?我怎样才能拥有一个包含两个以上“if”语句的 IBAction?
【发布时间】:2011-02-09 03:20:18
【问题描述】:

我正在创建一个测验应用程序,该应用程序将根据他们的测验结果显示一些内容。现在我被困在某事上。测验应用程序很简单,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 { 如果(问题编号 = 0){ question.text = @"不管是什么问题";

然后在每个问题之后它会在问题编号上加 1。下次按下它时,它会将问题文本更改为其他内容,并更改字母答案的标签。任何帮助将不胜感激。谢谢!!!

相关问题:Having more than one if statements in one IBAction in the .m file isn't working

【问题讨论】:

    标签: iphone objective-c ios


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

    【讨论】:

    • 好的,但是我如何在 plist 中有问题?在我将它们放在那里之后,当按下按钮时,我如何将它们加载到视图中?
    • 好吧,我添加了你给我的代码而不是之前的代码,它仍然做同样的事情。它会移动到第二个问题,但不会移动到第三个问题。
    • @ipodfreak0313 我添加了一些关于使用 plist 的更多信息,但如果这是一个非常简单的项目,这可能过于极端。无论如何,我很高兴您的代码现在可以正常工作。如果这解决了您的问题,请将其标记为答案,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2018-06-26
    • 2020-10-04
    相关资源
    最近更新 更多