NSTimer timerWithTimeInterval没有调用选择器(Swift)

时间:2016-04-26 11:56:51

标签: ios swift nstimer

我尝试过很多方法,我在其他问题中找到了这些方法,而且其中任何一个都在起作用。我的问题是计时器没有调用选择器

class MyViewController: UIViewController{
    var progressBarTimer = NSTimer()
    @IBOutlet weak var progress_bar: UIProgressView!

    override func viewDidLoad() {
        self.progress_bar.progress = 0
        self.progressBarTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(MyViewController.updateProgress(_:)), userInfo: nil, repeats: true)
        //also tried and redefining the updateProgress without timer parameter:
        /*
        *self.progressBarTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(MyViewController.updateProgress), userInfo: nil, repeats: true)
        */
    }
    func updateProgress(timer:NSTimer!) {
        progress_bar.progress += 0.1
        if (progress_bar.progress >= 1) {
           progressBarTimer.invalidate()
        }

    }
}

我试过

progressBarTimer.fire()

它只是执行updateProgress函数。

有人能说清楚吗?我真的很感激

2 个答案:

答案 0 :(得分:0)

您可以这样调用您的函数:

    let postes = ["1","2","3"]
    let timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "playProgressBar:", userInfo: postes, repeats: true)

并且功能必须如下:

func playProgressBar(timerSender : NSTimer) {

   //Do Somethings

}

答案 1 :(得分:0)

回答自己,我发现了问题。在之前的ViewController中,我在执行http连接后执行segue。为了使其工作,我在调度中嵌入了performSegue:

dispatch_async(dispatch_get_main_queue(), {
    self.performSegueWithIdentifier("goMySecondController", sender: nil)
})

在那个第二个控制器是我没有工作的Timer的地方。但是,在此更改工作正常后。

感谢您的回复!