【发布时间】:2021-08-23 04:44:33
【问题描述】:
我想检查我的计时器是否仍在运行,因为当我离开视图并返回时,我希望计时器仍在运行而不是重置。我试试这个还是失败了
if otpViewModel.timer == nil {
otpViewModel.timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(onTimerFires), userInfo: nil, repeats: true)
}else if otpViewModel.timer != nil {
otpViewModel.timer?.invalidate()
otpViewModel.timer = nil
countDownLabel.isHidden = true
resendButton.isHidden = false
}
@objc func onTimerFires()
{
otpViewModel.timeLeft -= 1
//resendBtn.isHidden = true
if otpViewModel.timeLeft <= 0 {
if otpViewModel.minutes == 1 {
otpViewModel.minutes = 0
otpViewModel.timeLeft = 60
}
else {
otpViewModel.timer?.invalidate()
otpViewModel.timer = nil
countDownLabel.isHidden = true
resendButton.isHidden = false
}
}
if otpViewModel.minutes == 1 {
switch otpViewModel.otpMethod {
case .SMS:
countDownLabel.text = "SMS dikirim ulang dalam \(otpViewModel.minutes) : \(otpViewModel.timeLeft) detik"
case .WHATSAPP:
countDownLabel.text = "WhatsApp dikirim ulang dalam \(otpViewModel.minutes) : \(otpViewModel.timeLeft) detik"
default:
print("none")
}
} else {
switch otpViewModel.otpMethod {
case .SMS:
countDownLabel.text = "SMS dikirim ulang dalam \(otpViewModel.minutes) : \(otpViewModel.timeLeft) detik"
case .WHATSAPP:
countDownLabel.text = "WhatsApp dikirim ulang dalam \(otpViewModel.minutes) : \(otpViewModel.timeLeft) detik"
default:
print("none")
}
}
}
我尝试了这个,但仍然无法正常工作,每当我离开视图并返回视图时,我的计时器都会重置
【问题讨论】:
-
}else if otpViewModel.timer != nil {只做} else { -
当前视图控制器离开时使用
Date保存当前日期和时间。 -
@aheze 我不明白我的 else if 上的“just do”是什么意思?
-
@afipermana 将
}else if otpViewModel.timer != nil {替换为} else {。它们都是一样的,因为在你做if otpViewModel.timer == nil { ...之前。但这只是一般性建议 - 您的问题可能出在其他地方。 -
@aheze 是的,还是不行,伙计
标签: ios swift iphone xcode timer