2016-12-16 32 views
1

後,我在viewDidLoad中的一些初始設置:不斷更新的NSTimer標籤賽格瑞

countDownLabel.alpha = 1 
    countDownLabel.text = "01:30" 
    swipeLeft.alpha = 0 
    swipeRight.alpha = 0 
    pressPlayToStartOr.alpha = 0 
    swipeToChangeTheSeq.alpha = 0 
    countDownPauseLbl.alpha = 0 

我有一個NSTimer(我已經把FUNC更新()計時器內裏的viewDidLoad的爲好,而它由一個UIButton在viewDidLoad之外觸發)。當我從UI視圖控制器中繼續時,定時器繼續運行。當我回到定時器視圖控制器時,我可以聽到定時器運行的聲音,但是定時器視圖控制器會刷新到初始狀態,並且您可以再次運行定時器以使它們重疊。在這種情況下,定時器結束後的編程延遲不起作用。我知道我可能使用了錯誤的方法,但希望能夠修復。無論我在應用中的何處,我如何更新標籤。

+1

使'timer'成爲一個單身人士。 – aircraft

+0

謝謝,但作爲初學者,我需要一些細節。我發現這是單身的代碼類Singleton {static let sharedInstance = Singleton()}我如何整合計時器? –

回答

1

效果:

the result

SingletonTimer.swift

// 
// SingletonTimer.swift 
// testSwiftUITextField 
// 
// Created by leo on 2016/12/17. 
// Copyright © 2016年 leo. All rights reserved. 
// 

import UIKit 

class SingletonTimer: NSObject { 

private static let sharedInstance = SingletonTimer() 
class var sharedSingletonTimer:SingletonTimer { 

    return sharedInstance 
} 

var timeCount:Int = 100 

func countDown() { 

    timeCount -= 1 
    timer_closure(timeCount) 
} 

lazy var timer:Timer = { 

    var timer:Timer 

    if #available(iOS 10.0, *) { 
     timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: { (timer) in 

      self.countDown() 
     }) 
    } else { 
     // Fallback on earlier versions 

     timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(countDown), userInfo: nil, repeats: true) 
    } 

    return timer 
}() 

var timer_closure:(Int)->Void = { (count) in 

} 

} 

ViewController.swift

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var label: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

} 

ViewController2.swift

import UIKit 

class ViewController2: UIViewController { 


@IBOutlet weak var label: UILabel! 

var timer:Timer? = nil 

override func viewDidLoad() { 
    super.viewDidLoad() 

    timer = SingletonTimer.sharedSingletonTimer.timer 
    SingletonTimer.sharedSingletonTimer.timer_closure = { (timeCount) in 

     print("\(timeCount)") 
     self.label.text = "\(timeCount)s !" 
    } 

    if timer != nil { 
     timer?.fire() 
    } 
} 

} 
+0

這就是我需要的。謝謝你的時間。 –