NSTimer timerWithTimeInterval不调用选择器(Swift)

问题描述:

我尝试了很多方法,我发现在其他问题和任何他们正在工作。我的问题是,计时器没有要求选择NSTimer timerWithTimeInterval不调用选择器(Swift)

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功能。

任何人都可以点亮?我真的很感激

+1

我试过你的代码,它工作正常,它每秒调用updateProgress方法。 – Yuvrajsinh

+0

那么,为什么不为我工作?可能是我在此之前在其他ViewController中调用了其他NSTimer? – JMDelafuente

+0

您是否尝试过评论updateProgress方法中的所有代码并只写print()语句? – Yuvrajsinh

答复我自己,我已经找到了问题。在之前的ViewController中,我在做一个http连接之后执行一个segue。为了使它的工作,我已经嵌入派遣内部performSegue:

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

在这第二个控制器,我有一个不工作的定时器。但是,此更改正常工作后。

感谢您的回复!

你可以叫你的函数是这样的:

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 

} 
+0

仍然没有调用选择器。正如我对@Yuvrajsinh所说的那样,我在前一个ViewController中创建了另一个NSTimer,但我无效 – JMDelafuente