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