正确的方法是向NSRunLoop添加计时器

时间:2015-01-19 11:33:44

标签: ios uitableview swift nstimer nsrunloop

我正在尝试将计时器添加到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)
        }
    }

现在,按下按钮时似乎没有任何事情发生。我的理解是,一旦计时器被添加到运行循环中,它将开始独立运行。

有关如何正确完成此操作的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:-1)

Timer方法总是有一个参数,它是一个timer对象本身。因此“updateCounter”作为选择器可能是错误的。