我正在尝试在计时器达到 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 之前尝试可选的链接自我以确保。