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功能。
任何人都可以点亮?我真的很感激
答
答复我自己,我已经找到了问题。在之前的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
我试过你的代码,它工作正常,它每秒调用updateProgress方法。 – Yuvrajsinh
那么,为什么不为我工作?可能是我在此之前在其他ViewController中调用了其他NSTimer? – JMDelafuente
您是否尝试过评论updateProgress方法中的所有代码并只写print()语句? – Yuvrajsinh