我尝试过很多方法,我在其他问题中找到了这些方法,而且其中任何一个都在起作用。我的问题是计时器没有调用选择器
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函数。
有人能说清楚吗?我真的很感激
答案 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的地方。但是,在此更改工作正常后。
感谢您的回复!