计时器完成后执行 segue



我正在尝试在计时器达到 0 后立即执行 segue。我的代码如下,用于视图DidLoad中的计时器:

override func viewDidLoad() {
        super.viewDidLoad()
        if timerRunning == false {
            timerCounter = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(Counting), userInfo: nil, repeats: true)
            timerRunning = true
        }
        if counter == 0 {
            timerRunning = false
        }

这是函数计数器:

func Counting() {
    counter -= 1
    timer.text = "(counter)"
    if counter == 0 {
        timerCounter.invalidate()
        timerRunning = false
        self.performSegue(withIdentifier: "resultView", sender: self)
    }
}

你只需要在主线程上执行 segue。用

DispatchQueue.main.async{
   self.performSegue(withIdentifier: "resultView", sender: self)
}

如果您确定 segue 标识符对于 performSegue 调用和故事板或 xib 都是正确的,那么也许 self 以某种方式在它应该之前被释放了?

试试这个:

DispatchQueue.main.async{
    [weak self] in
    self?.performSegue(WithIdentifier:"resultView", sender: self)
}

或者在运行 performSegue 之前尝试可选的链接自我以确保。

最新更新