Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在测验应用程序中突出显示正确答案_Ios_Swift - Fatal编程技术网

Ios 在测验应用程序中突出显示正确答案

Ios 在测验应用程序中突出显示正确答案,ios,swift,Ios,Swift,我是iOS开发新手,一直在学习一些在线课程。在其中一个项目中,我们开发了一个测验应用程序,我希望通过改进该应用程序来提高我的技能,使其超出本课程所涵盖的范围 该应用程序使用.json文件作为问答的“数据库”。这个.json文件如下所示 { "id" : "1", "question": "Earth is a:", "answers": [ "Planet", "Meteor", "Star",

我是iOS开发新手,一直在学习一些在线课程。在其中一个项目中,我们开发了一个测验应用程序,我希望通过改进该应用程序来提高我的技能,使其超出本课程所涵盖的范围

该应用程序使用.json文件作为问答的“数据库”。这个.json文件如下所示

  {
    "id" : "1",
    "question": "Earth is a:",
         "answers": [
        "Planet",
        "Meteor",
        "Star",
        "Asteroid"
      ],
      "difficulty": "1"
  }
…然后继续问500多个问题

目前,该应用程序向用户提出了一个包含四个可能答案的问题。在.json文件中,第一个答案始终是正确的答案,但应用程序被编码为将答案洗牌,因此正确答案并不总是列在第一位

该应用程序还进行了编码,以便在用户做出选择后,显示答案的四个按钮(我使用四个不同颜色的按钮图像)被禁用,并且外观也变暗,但他们选择的按钮不会变暗,以便突出显示他们的选择

我想做的是改变这一点,以突出显示具有正确答案的按钮,作为通知用户正确答案的一种方式

我使用以下代码加载问题和答案,并将答案随机排列:

 func loadAllQuestionsAndAnswers()
    {
        let path = NSBundle.mainBundle().pathForResource("content", ofType: "json")
        let jsonData : NSData = NSData(contentsOfFile: path!)!
        allEntries = (try! NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers)) as! NSArray
        //println(allEntries)

    }


func loadQuestion(index : Int)
{
    let entry : NSDictionary = allEntries.objectAtIndex(index) as! NSDictionary
    let question : NSString = entry.objectForKey("question") as! NSString
    let arr : NSMutableArray = entry.objectForKey("answers") as! NSMutableArray

    //println(question)
    //println(arr)

    labelQuestion.text = question as String

    let indices : [Int] = [0,1,2,3]
    //let newSequence = shuffle(indices)
    let newSequence = indices.shuffle()
    var i : Int = 0
    for(i = 0; i < newSequence.count; i++)
    {
        let index = newSequence[i]
        if(index == 0)
        {
            // we need to store the correct answer index
            currentCorrectAnswerIndex =  i

        }

        let answer = arr.objectAtIndex(index) as! NSString
        switch(i)
        {
        case 0:
            buttonA.setTitle(answer as String, forState: UIControlState.Normal)
            break;

        case 1:
            buttonB.setTitle(answer as String, forState: UIControlState.Normal)
            break;

        case 2:
            buttonC.setTitle(answer as String, forState: UIControlState.Normal)
            break;

        case 3:
            buttonD.setTitle(answer as String, forState: UIControlState.Normal)
            break;

        default:
            break;
        }
在突出显示按钮方面,我将使用编码,例如:

func resetAnswerButtons()
{
    buttonA.alpha = 1.0
    buttonB.alpha = 1.0
    buttonC.alpha = 1.0
    buttonD.alpha = 1.0
    buttonA.enabled = true
    buttonB.enabled = true
    buttonC.enabled = true
    buttonD.enabled = true
}

@IBAction func PressedButtonA(sender: UIButton) {
    print("button A pressed")
    buttonB.alpha = 0.3
    buttonC.alpha = 0.3
    buttonD.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
     CheckAnswer(0)
}
@IBAction func PressedButtonB(sender: UIButton) {
    print("button B pressed")
    buttonA.alpha = 0.3
    buttonC.alpha = 0.3
    buttonD.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
    CheckAnswer(1)
}

@IBAction func PressedButtonC(sender: UIButton) {
    print("button C pressed")
    buttonA.alpha = 0.3
    buttonB.alpha = 0.3
    buttonD.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
    CheckAnswer(2)
}

@IBAction func PressedButtonD(sender: UIButton) {
    print("button D pressed")
    buttonA.alpha = 0.3
    buttonB.alpha = 0.3
    buttonC.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
    CheckAnswer(3)
}

我无法理解的是如何编写应用程序,以便突出显示正确答案?目前,上述代码通过将“其他”按钮的alpha调暗,有效地突出显示了按下的按钮。如何让应用程序识别哪个“无序”按钮包含正确答案,并突出显示该按钮

掷骰子时,记住包含正确答案的按钮索引


此外,您可以将所有按钮放在一个数组中,并使用forall循环操作所有按钮。这使代码变得越来越干净,并且去掉了奇怪的变量名和开关大小写。

OP,请停止滥用xcode标记。根据经验,在添加标记之前,请先阅读鼠标。哎呀!谢谢你的提示。
func resetAnswerButtons()
{
    buttonA.alpha = 1.0
    buttonB.alpha = 1.0
    buttonC.alpha = 1.0
    buttonD.alpha = 1.0
    buttonA.enabled = true
    buttonB.enabled = true
    buttonC.enabled = true
    buttonD.enabled = true
}

@IBAction func PressedButtonA(sender: UIButton) {
    print("button A pressed")
    buttonB.alpha = 0.3
    buttonC.alpha = 0.3
    buttonD.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
     CheckAnswer(0)
}
@IBAction func PressedButtonB(sender: UIButton) {
    print("button B pressed")
    buttonA.alpha = 0.3
    buttonC.alpha = 0.3
    buttonD.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
    CheckAnswer(1)
}

@IBAction func PressedButtonC(sender: UIButton) {
    print("button C pressed")
    buttonA.alpha = 0.3
    buttonB.alpha = 0.3
    buttonD.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
    CheckAnswer(2)
}

@IBAction func PressedButtonD(sender: UIButton) {
    print("button D pressed")
    buttonA.alpha = 0.3
    buttonB.alpha = 0.3
    buttonC.alpha = 0.3

    buttonA.enabled = false
    buttonB.enabled = false
    buttonC.enabled = false
    buttonD.enabled = false
    CheckAnswer(3)
}