因此,我正在创建一个应用程序/游戏,您可以在计时器用完之前点击与图片对应的按钮,然后输掉.你得到1秒钟点击按钮,如果你选择了正确的按钮,那么计时器将重置并出现一张新照片.我无法重置计时器.一旦我试图重置它,它会在一秒后触发.这是代码:
loadPicture()运行viewDidLoad()
func loadPicture() { //check if repeat picture secondInt = randomInt randomInt = Int(arc4random_uniform(24)) if secondInt != randomInt { pictureName = String(self.PicList[randomInt]) image = UIImage(named: pictureName) self.picture.image = image timer.invalidate() resetTimer() } else{ loadPicture() } }
这是resetTimer()方法:
func resetTimer(){ timer = NSTimer.scheduledTimerWithTimeInterval(1.0,target: self,selector: Selector("gameOverTimer"),userInfo: nil,repeats: false) }
我认为它可能与NSRunloops有关?我不确定.我甚至不知道NSRunloop是多么诚实.
解决方法
所以我终于想通了……
我必须通过初始化来创建一个单独的函数来启动计时器.
在resetTimer()函数中,我添加了timer.invalidate()行.所以我的代码看起来像这样:
func loadPicture() { //check if repeat picture secondInt = randomInt randomInt = Int(arc4random_uniform(24)) if secondInt != randomInt { pictureName = String(self.PicList[randomInt]) image = UIImage(named: pictureName) self.picture.image = image resetTimer() } else{ loadPicture() } } func startTimer(){ timer = NSTimer.scheduledTimerWithTimeInterval(1.0,userInfo: "timer",repeats: true) } func resetTimer(){ timer.invalidate() startTimer() }
编辑
使用新的选择器语法,它看起来像这样:
func startTimer(){ timer = NSTimer.scheduledTimerWithTimeInterval(1.0,selector: #selector(NameOfClass.startTimer),repeats: true) }
原文地址:https://www.jb51.cc/iOS/334602.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。