Swift - 显示时间的更新/刷新标签

问题描述:

我有一个以12小时格式显示当前时间的标签。Swift - 显示时间的更新/刷新标签

但是,它不更新/刷新每次分钟/小时更改的时间。

我需要它在时间改变时自动将标签更改为当前时间。

替换您的视图控制器代码下面的代码,然后连接IBOutlet中以showTimeLbl

class ViewController: UIViewController { 

@IBOutlet weak var showTimeLbl: UILabel! 
var timeCount:Int = 0 
var timer:Timer! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    if(timer != nil) 
    { 
     timer.invalidate() 
    } 
    timer = Timer(timeInterval: 1.0, target: self, selector: #selector(ViewController.timerDidFire), userInfo: nil, repeats: true) 
    RunLoop.current.add(timer, forMode: RunLoopMode.commonModes) 

} 

func timerDidFire() 
{ 
    timeCount += 1 

    showTimeLbl.text = NSString(format: "%02d:%02d:%02d", timeCount/3600,(timeCount/60)%60,timeCount%60) as String 

} 
override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(true) 
    timer?.invalidate() 
    timer = nil 
} 

}

+0

相当肯定SWIFT已经更新几千次,因为被张贴,所以我问了,因为其他人都过时了。 – reecefox

+0

@reecefox请检查我已经更新了我的答案swift 3.0 –

斯威夫特3溶液

class ViewController { 

@IBOutlet weak var timeLabel: UILabel! 
var timer: NSTimer? 

let formatter: DateFormatter = { 
     let tmpFormatter = DateFormatter() 
     tmpFormatter.dateFormat = "hh:mm a" 
     return tmpFormatter 
    }() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view, typically from a nib. 


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

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated) 
    timer?.invalidate() 
    } 

func getTimeOfDate() { 
    var curDate = Date() 

    timeLabel.text = formatter.string(from: curDate) 

} 
+0

@reecefox检查我的答案 –

+0

请使用小写名称来表示变量,常量,属性和案例。 –

+0

@NicolasMiari对不起..我没有注意..编辑..谢谢.. –