我正在尝试将计时器添加到NSRunLoop。我的预期结果是,一旦定时器被添加到循环中,它们就会彼此独立地开始倒计时。
我的代码现在看起来像这样:
var timer = NSTimer()
let mainRunLoop:NSRunLoop = NSRunLoop()
func blurViewActive(gestureRecognizer:UIGestureRecognizer) {
if (gestureRecognizer.state == UIGestureRecognizerState.Began){
println("STATE BEGAN")
var point = gestureRecognizer.locationInView(self.tv)
if let indexPath = self.tv.indexPathForRowAtPoint(point){
let data = messageList[indexPath.row] as Messages
if let theCell = self.tv.cellForRowAtIndexPath(indexPath) as? TableViewCell{
self.timer = NSTimer(timeInterval: 1, target: self, selector: "updateCounter", userInfo: nil, repeats: true)
self.mainRunLoop.addTimer(timer, forMode: NSRunLoopCommonModes)
mainRunLoop.run()
}
}
}
}
var counter = 10
func updateCounter(){
if counter == 0{
timer.invalidate()
}else{
counter = --counter
println(counter)
}
}
现在,按下按钮时似乎没有任何事情发生。我的理解是,一旦计时器被添加到运行循环中,它将开始独立运行。
有关如何正确完成此操作的任何建议将不胜感激。
答案 0 :(得分:-1)
Timer方法总是有一个参数,它是一个timer对象本身。因此“updateCounter”作为选择器可能是错误的。