ios - ViewController 转换时如何防止计时器重置

标签 ios timer

我在我的 ViewController A 中运行一个计时器作为我的主视图 Controller 。 计时器在 viewDidLoad() 中初始化如下:

var timer = CustomizedTimer()

从 15 分钟开始倒计时。

当用户从 ViewController A 快速切换到 SettingViewController 时,计时器再次重置为 15 分钟。

我尝试将计时器实例放入AppDelegate中,但它不起作用。 我需要做的是,每当用户切换 View Controller 时,保持计时器在后台工作。 那么,如何解决这个问题?提前致谢。

最佳答案

只需创建一个单例类来保存您的 Timer,而且,如果您从 ViewController A 推送到 SettingViewController,第一个 vc 将不会取消初始化,您的计时器仍将运行,或者您正在 viewWillAppear 或稍后创建计时器,然后它将再次创建,从而重置您的计时器

示例:

class TimerHelper {
    static let shared = TimerHelper()
    var timer: Timer!
}

这样调用它:

TimerHelper.shared.timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { (timer) in
    print("a")
})

将 block 替换为基于目标也可以,将其指向您的主类来执行代码

关于ios - ViewController 转换时如何防止计时器重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792837/

相关文章:

c++ - CreateTimerQueueTimer 回调和竞争条件

java - Swing 计时器不能正常工作

timer - dart:在给定时间后停止收听流

ios - 如何将渐变应用于 iOS Swift 应用程序的背景 View

ios - 在 UILabel iOS 中点后显示带有两位小数的浮点值时遇到问题

ios - 如何在 VOIP 通话断开后关闭 Callkit 屏幕

ios - 如何在长时间按压后停止我的 UICollectionViewCell 摇晃?

iphone - 为什么 Facebook nslog 说在设备上不可用

matlab - 使用 tic/toc 函数而不是计时器

flutter - 我几乎每次都将 Stateless Widget 与 BLoC 一起使用。我错了吗?