【问题标题】:NSTimer timerWithTimeInterval not calling selector (Swift)NSTimer timerWithTimeInterval 不调用选择器(Swift)
【发布时间】:2016-04-26 11:56:51
【问题描述】:

我尝试了许多在其他问题中发现的方法,其中任何一种都有效。我的问题是计时器没有调用选择器

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 函数。

有人能解释一下吗?我真的很感激

【问题讨论】:

  • 我试过你的代码,它工作正常,它每秒调用一次 updateProgress 方法。
  • 那么,为什么不适合我呢?可能是我在这个之前在其他 ViewController 中调用了其他 NSTimer?
  • 您是否尝试过在 updateProgress 方法中注释所有代码并只编写 print() 语句?
  • 是的,甚至调试也达不到那个代码
  • 你是否通过在 updateProgress 函数中放置断点或打印来检查?

标签: ios swift nstimer


【解决方案1】:

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

    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

}

【讨论】:

  • 仍然没有调用选择器。正如我对@Yuvrajsinh 所说,我在之前的 ViewController 中创建了另一个 NSTimer,但我正在使其无效
【解决方案2】:

回复我自己,我发现了问题。在之前的 ViewController 中,我在进行 http 连接后执行了 segue。为了让它工作,我在 dispatch 中嵌入了 performSegue:

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

在第二个控制器中,我的计时器不起作用。但是,经过此更改后可以正常工作。

感谢回复!

【讨论】:

    猜你喜欢
    • 2012-06-18
    • 1970-01-01
    • 2015-09-05
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多