我创建了一个简单的测验应用程序,它会计算用户回答的问题数量,并将它们放在另一个视图的标签中。问题是,当用户回答最后一个问题(数组)正确时,它不会像我的其他问题一样在我的计数器中计数,而只是切换视图。 因此,如果最后一个问题得到正确回答,则不会在下一个视图中显示4个正确,而只显示3。 还是没想到。有帮助吗? 我的代码:
func pickQuestion(){
if questions.count > 0{
qNumber = random() % questions.count
questions.shuffleInPlace()
qLabel.text = questions[qNumber].question
answerNumber = questions[qNumber].answer
for i in 0..<buttons.count{
buttons[i].setTitle(questions[qNumber].answers[i], forState: .Normal)
}
questions.removeAtIndex(qNumber)
}
else {
NSLog("done")
self.performSegueWithIdentifier("Segue1", sender: self)
}
}
按钮代码,我检查答案是否正确:
@IBAction func btn1(sender: AnyObject) {
if answerNumber == 0 {
pickQuestion()
count += 1
}
else {
NSLog("Wrong")
pickQuestion()
}
}
经过一些调试后我发现了这一点 questions.removeAtIndex(qNumber) 是删除数组的那个(removeAtIndex用于防止问题在已经回答时再次出现)
我将qNumber声明为:
qNumber = random()%questions.count
如何将qNumber设置为在应答后被删除的当前数组?
我正在切换视图:
其他{
NSLog("done")
self.performSegueWithIdentifier("Segue1", sender: self)
}
答案 0 :(得分:1)
显示最后一个问题后,将其从数组中删除,使数组为空。然后,在回答时,你有:
if answerNumber == 0 {
pickQuestion()
count += 1
}
函数中的代码检查questions.count是否大于0,它不是,并执行segue。 segue在计数更新之前发生。尝试更改块以允许首先更新计数:
if answerNumber == 0 {
count += 1
pickQuestion()
}