Swift 快速计时器没有遵循正确的间隔
我正在尝试创建一个测验应用程序,当计时器过期时(即10秒,我希望Swift 快速计时器没有遵循正确的间隔,swift,nstimer,ios13,Swift,Nstimer,Ios13,我正在尝试创建一个测验应用程序,当计时器过期时(即10秒,我希望Timmer的间隔为1秒),它会自动重置,然后提取下一个问题,然后Timmer再次从10秒开始重新启动。。。但我的问题是,当第一个问题加载时,计时器没有遵循固定的时间间隔,它显示的时间间隔为2。。。i、 e.10,8,6。。然后对于第二个问题,它每隔3秒跳一次,同样地,间隔也会增加 var countTime = 10.0 func handleNextQuestion() throws { nextQues
Timmer
的间隔为1秒),它会自动重置,然后提取下一个问题,然后Timmer
再次从10秒开始重新启动。。。但我的问题是,当第一个问题加载时,计时器没有遵循固定的时间间隔,它显示的时间间隔为2。。。i、 e.10,8,6。。然后对于第二个问题,它每隔3秒跳一次,同样地,间隔也会增加
var countTime = 10.0
func handleNextQuestion() throws {
nextQuestion()
if questionCounter == allQuestions.list.count-1{
finishButton.isHidden = false
nextButton.isHidden = true
//scoreLbl.text = "\(score)"
}
}
func nextQuestion(){
showResultView(isCorrect: (question?.isAnswerCorrect)!)
questionCounter = questionCounter + 1
question = fetchQuestion()
setQuizView(question: question!)
}
@objc func update() {
if(countTime > 0) {
countTime = countTime - 1
self.countDownLabel.text = String(countTime)
}else{
timer.invalidate()
countTime = 10.0
do{
try handleNextQuestion()
}
catch{
moveToResultView()
}
}
}
func startTimer() {
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true)
}
func setQuizView(question:Question) {
self.countDownLabel.text = "10"
startTimer()
startTimer()
questionLabel.text = question.questionText
ansLbl1.text = question.answer1
ansLbl2.text = question.answer2
ansLbl3.text = question.answer3
ansLbl4.text = question.answer4
if question.selectedAnswer == Constants.DEFAULT_ANSWER {
for checkBoxItem in checkBoxlist{
checkBoxItem.isChecked = false
}
}
}
func setQuizView(问题:问题)
调用startTimer()
两次。我想这就是这种行为的原因。在每一个新问题上,计时器启动两次,但只失效一次,因此秒数跳转一个额外的exach问题
只需删除对
startTimer()
的一个调用,您在setQuizViewsorry中调用了startTimer()两次,因为我在复制粘贴时修改了代码,删除了部分代码,所以碰巧添加了额外的startTimer(),这不是原始代码的一部分。但它仍然有问题编辑问题谢谢@Yunnosch你说得对原谅我的错误创建一个新的每个人都在学习。你做得很好。玩得开心。这不是你代码的一部分,但是计时器对象是如何声明的,它看起来好像有多个计时器在运行?现在您再次调用startTimer()两次。保存前请仔细检查您的帖子。