2017-06-28 42 views
0

我在我的主視圖控制器中運行我的ViewController A中的定時器。 計時器在viewDidLoad()初始化如下:如何在ViewController轉換時防止定時器重置

var timer = CustomizedTimer() 

,並開始15分鐘倒計時。

當用戶從ViewController A迅速移動到SettingViewController時,計時器重新設置爲15分鐘。

我嘗試將定時器實例放入AppDelegate,它不起作用。 我需要做的是,當用戶切換視圖控制器時,保持定時器在後臺工作。 那麼,如何解決這個問題?提前致謝。

回答

1

只需創建一個單獨的類來保存Timer,而且,如果從ViewController A推到SettingViewController,第一個VC不會得到DEINIT,你的計時器仍然在運行,或者您在viewWillAppear或更高版本創建的計時器,然後它會被再次產生,從而重置定時器

樣品:

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

這樣稱呼它:

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

以目標爲基礎替換塊也很好,指向你的主類來執行代碼

+0

我聽說過很多關於單例類的知識,我知道它是一種設計模式。我試圖做到這一點。但即使我遵循一些教程,我也沒有任何線索。請介意告訴我如何在代碼中完成它?我在編程方面很新穎:)謝謝 – Nan

+0

我覺得在這裏很容易找到,做一個很容易,如果你在你的viewWillAppear上創建Timer,也應該再次檢查,所以把它移動到viewDidLoad並看看它是否得到重置 – Tj3n

+0

現在就開始工作 – Nan

0

對不起,我不能給你一個完整的例子,但也許你可以使用線程來實現的行爲。

相關問題